同余定理
(ab)%c=(a%cb%c)%c
(a+b)%c=(a%c+b%c)%c
(a-b)%c=(a%c-b%c)%c
只适用于加减乘,不用于除。
防止变量超出界限。
快速乘
int fast_mul(int a,int b,int c)
{
int ans=0;
while(b)
{
if(b%2)
{
ans=(ans%c+a%c)%c;
}
a=(a%c+a%c)%c;
b=b/2;
}
return ans%c;
}
快速幂
int fast_pow(int a,int b,int c)
{
int ans=1;
a%=c;
while(b)
{
if(b%2)
ans=ans*a%c;
a=a*a;
b/=2;
}
return ans;
}
GCD
用于求两数的最大公约数
使用循环
int main()
{
int a,b,mid;
scanf("%d%d",&a,&b);
while(b)
{
mid=a;
a=b;
b=mid%b;
}
printf("%d",a);
return 0;
}
使用递归
int gcd(int a,int b)
{
if(b==0)
return a;
gcd(b,a%b);
}
菜鸟理论,dalao看看就好。