欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 游戏 > 一些C语言常用函数(后续会继续更新)

一些C语言常用函数(后续会继续更新)

2025/4/20 16:19:41 来源:https://blog.csdn.net/hj2207010104/article/details/147352184  浏览:    关键词:一些C语言常用函数(后续会继续更新)

1.求质数
bool isprime(int num)
{
    if(num < 2) return false;
    for(int j = 2;j <= sqrt(num);j++)
    {
        if(num % j == 0)
        {
            return false;
        }
    }
    return true;
}

2.快排
void qsort(int l,int r)
{
    int i,j,mid;
    i = l;
    j = r;
    mid = a[(l + r)/2];
    do
    {
        while(a[j] > mid){
            j--;
        }
        while(a[i] < mid){
            i++;
        }
        if(i <= j)
        {
            swap(a[i],a[j]);
            i++;
            j--;
        }
    }while(i <= j);
    if(m <= j)
    {
        qsort(l,j);    
    }    
    else if(i <= m)
    {
        qsort(i,r);
    }
    else
    {
        printf("%d",a[m+1]);
    }

3.求最大公因数(辗转相除法)
int gcd(int a,int b){
    return b == 0 ? a : gcd(b,a % b); 
}
4.日期模拟
#include <bits/stdc++.h>
#define MX 100005
using namespace std;
int b[] = {13,1,2,3,5,4,4,2,2,2};
int main() {
    int cnt = 0;
    for(int i = 2000; i <= 2024; i++) {
        int cnt1 = 0,ant1 = i;
        while(ant1 != 0) {
            cnt1 = cnt1 + b[ant1 % 10];
            ant1 = ant1 / 10;
        }
        for(int j = 1; j <= 12; j++) {
            int cnt2 = 0,ant2 = j;
            if(ant2 / 10 != 0) {
                while(ant2 != 0) {
                    cnt2 = cnt2 + b[ant2 % 10];
                    ant2 = ant2 / 10;
                }
            } else {
                cnt2 = cnt2 + 13 + b[ant2];
            }
            for(int k = 1; k <= 31; k++) {
                if(i == 2024 && j == 4 && k == 14) goto end;
                if(j == 1 | j == 3 | j == 5 | j == 7 | j == 8 | j == 10 | j == 12);
                else if(j == 2) {
                    if((i % 4 == 0 && i % 100 != 0) || (i % 400 == 0)) {
                        if(k > 29) break;
                    } else {
                        if(k > 28) break;
                    }
                } else {
                    if(k > 30) break;
                }
                int cnt3 = 0,ant3 = k;
                if(ant3 / 10 != 0) {
                    while(ant3 != 0) {
                        cnt3 = cnt3 + b[ant3 % 10];
                        ant3 = ant3 / 10;
                    }
                } 
                else {
                    cnt3 = cnt3 + 13 + b[ant3];
                }
                if(cnt1 + cnt2 + cnt3 > 50) { 
                    cnt++;
                }
            }
            }
        }
        end:
        cout<<cnt<<endl;
        return 0;
    }

5.超大数定义和输出
typedef __int128 ll;
void print128(ll x){
    if(x > 9) print128(x / 10);
    putchar(x % 10 + '0');
}
6.二叉树深度搜索
void dfs(int root,int step){
    if(root == 0) return;
    mx = max(mx,step);
    dfs(a[root].l,step+1);
    dfs(a[root].r,step+1);
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词