板子合集

板子合集

此板子合集可能借鉴了其他多位大佬的代码,如有侵权敬请告知,此博客仅供个人学习,无商业用途。

gcd(最大公因数)

int gcd(int a,int b)//a<b
{
	return b?gcd(b,a%b):a;
}

ksm(快速幂)

long long ksm(long long a,long long b,long long p)//a的b次方对p取余
{
	long long ret=1;
	while(b){
		if(b&1) ret=ret*a%p;
		a=a*a%p;
		b>>=1;
	}
	return ret%p;
}

优化
一个大佬的优化博客优化

#pragma GCC optimize(2)
#pragma GCC optimize(3)
#pragma GCC optimize("Ofast")
#pragma GCC optimize("inline")
#pragma GCC optimize("-fgcse")
#pragma GCC optimize("-fgcse-lm")
#pragma GCC optimize("-fipa-sra")
#pragma GCC optimize("-ftree-pre")
#pragma GCC optimize("-ftree-vrp")
#pragma GCC optimize("-fpeephole2")
#pragma GCC optimize("-ffast-math")
#pragma GCC optimize("-fsched-spec")
#pragma GCC optimize("unroll-loops")
#pragma GCC optimize("-falign-jumps")
#pragma GCC optimize("-falign-loops")
#pragma GCC optimize("-falign-labels")
#pragma GCC optimize("-fdevirtualize")
#pragma GCC optimize("-fcaller-saves")
#pragma GCC optimize("-fcrossjumping")
#pragma GCC optimize("-fthread-jumps")
#pragma GCC optimize("-funroll-loops")
#pragma GCC optimize("-fwhole-program")
#pragma GCC optimize("-freorder-blocks")
#pragma GCC optimize("-fschedule-insns")
#pragma GCC optimize("inline-functions")
#pragma GCC optimize("-ftree-tail-merge")
#pragma GCC optimize("-fschedule-insns2")
#pragma GCC optimize("-fstrict-aliasing")
#pragma GCC optimize("-fstrict-overflow")
#pragma GCC optimize("-falign-functions")
#pragma GCC optimize("-fcse-skip-blocks")
#pragma GCC optimize("-fcse-follow-jumps")
#pragma GCC optimize("-fsched-interblock")
#pragma GCC optimize("-fpartial-inlining")
#pragma GCC optimize("no-stack-protector")
#pragma GCC optimize("-freorder-functions")
#pragma GCC optimize("-findirect-inlining")
#pragma GCC optimize("-fhoist-adjacent-loads")
#pragma GCC optimize("-frerun-cse-after-loop")
#pragma GCC optimize("inline-small-functions")
#pragma GCC optimize("-finline-small-functions")
#pragma GCC optimize("-ftree-switch-conversion")
#pragma GCC optimize("-foptimize-sibling-calls")
#pragma GCC optimize("-fexpensive-optimizations")
#pragma GCC optimize("-funsafe-loop-optimizations")
#pragma GCC optimize("inline-functions-called-once")
#pragma GCC optimize("-fdelete-null-pointer-checks")

普通高精度加法和乘法

int chai(int a[],int x)//将大数x拆分倒着存入数组  例如123->a[0]=3,a[2]=1;
{
    int i=0;
    while(x>=10)
    {
        a[i++]=x%10;
        x/=10;
    }
    a[i]=x;
    return i;//返回有效数字长度
}
void jia(int num[],int num_i,int b[],int b_i)//num代表的数加上b代表的数,num_i代表num的长度
{
    //默认mun_i>=b_i
    int i=0;
    for(i;i<=num_i;i++)//若num_i由函数chai()得来,则为i<=num_i
        num[i]+=b[i];//一一相加
    if(num[i]>=10) //进位运算
    {
        num[i+1]+=num[i]/10;
        num[i]%=10;
    }
}
void jian(int num[],int num_i,int b[],int b_i)//num代表的数减去b代表的数
{
    //默认mun_i>=b_i
    int i=0;
    for(i;i<num_i;i++)
        num[i]-=b[i];//一一相减
    if(num[i]<0) //补位运算
    {
        num[i]+=10;
        num[i+1]-=1;
    }
}
void cheng(int a[],int a_i,int b[],int b_i,int num[])//a[],b[]相乘存到num[]
{
    //默认a_i>=b_i  其实无所谓
    int i,j;
    for(i=0;i<=a_i;i++)
    {
        for(j=0;j<=b_i;j++)
        {
            num[i+j]+=a[i]*b[j];//num[]初始化为0
        }
    }
}//num[]计算完毕后要进行进位运算才可以正常以十进制展示结果

输入输出
在多组样例的题目中,最好用scanf进行输出。
若想用cin,cout,最好在主函数里加入以下代码:

ios::sync_with_stdio(false);

如图:在这里插入图片描述

线性筛

int prime[1100000],primesize,phi[11000000];
bool isprime[11000000];
void getlist(int listsize)
{
    memset(isprime,1,sizeof(isprime));
    isprime[1]=false;
    for(int i=2;i<=listsize;i++)
    {
        if(isprime[i])prime[++primesize]=i;
         for(int j=1;j<=primesize&&i*prime[j]<=listsize;j++)
         {
            isprime[i*prime[j]]=false;
            if(i%prime[j]==0)break;
        }
    }
}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值