标签:
把常用的数学模板放这里免得忘了
1 int prime[maxn]; 2 void prime() 3 { 4 int i, j; 5 memset(prime, 1, sizeof(prime)); 6 for (i = 2; i < maxn; i++){ 7 if (prime[i]){ 8 for (j = 2; i*j < maxn; j++) 9 prime[i*j] = 0; 10 } 11 } 12 prime[0] = prime[1] = 0; 13 prime[2] = 1; 14 }
1 int cur[maxn][maxn] = { 1 }; 2 3 //预处理 利用杨辉三角计算组合数 4 void init(){ 5 int i, left, right; 6 for (i = 1; i <= maxn; i++){ 7 cur[i][0] = cur[i][i] = 1; 8 left = 1, right = i - 1; 9 while (left <= right){ 10 cur[i][left] = cur[i - 1][left - 1] + cur[i - 1][left]; 11 cur[i][right--] = cur[i][left++];//组合数性质cur[i][j]=cur[i][i-j]; 12 } 13 } 14 }
1 #include <iostream> 2 #include <string> 3 using namespace std; 4 int main() 5 { 6 unsigned long long b,c,cur,res,i; 7 string a; 8 while(cin>>a){ 9 cin>>b>>c; 10 for(i=cur=0;a[i]!=‘\0‘;i++){ 11 cur=cur*10+a[i]-‘0‘; 12 cur%=c; 13 } 14 res=1; 15 while(b){ 16 if(b&1) res=res*cur%c; 17 cur=cur*cur%c; 18 b>>=1; 19 } 20 cout<<res<<endl; 21 } 22 return 0; 23 }
模运算法则:
1 long pow(int x, unsigned int n){ 2 long p = 1; 3 while (n){ 4 if (n & 1) p *= x; 5 x *= x; 6 n >>= 1; 7 } 8 return p; 9 }
标签:
原文地址:http://www.cnblogs.com/zYx-ac/p/4564282.html