应用到快速幂方法,需要注意的是 result和base都需要定为无符号长长整型,否则base在2不断相乘的过程中会超出int的数据范围。
#include <stdio.h>
#include <math.h>
#define a 6662333
int main()
{
unsigned long long int n,result;
int i;
unsigned long long int base=2;
scanf("%llu",&n);
n=n-1;
result=1;
while(n>0)
{
if(n%2==1)
{
result=result*base%a;
}
n=n/2;
base=(base*base)%a;
}
printf("%llu",result);
}