不对
10#我的想法错了,当我没说
10#我的想法错了,当我没说
My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
int modExp_bigint(a,b,k) { int res=1; int y=a mod k;// O( length(a) ) while(b>0){ //O( length(b) ) r=b mod 10; //如果b是按照10进制存储 ,这里只需取一位 O(1) res=res*modExp_int(y,r,k) mod k; //O(log r)<O(log10)=O(1) y=modExp_int(y,10,k); //O(log10)=O(1) b/=10; //如果b是按照10进制存储 ,这里只需移动指针 O(1) } return res; }
#include <iostream> using namespace std; int modExp_int(int a,int b,int m) { int t=1,y=a%m; while(b){ if(b&1){ t=t*y%m; } y=y*y%m; b=(b>>1); } return t; } int modExp2008() { int res=1,y=0; for(int i=0;i<2008;i++){ y=(y*10+1)%2008; } for(int i=0;i<2008;i++){ res=res*modExp_int(y,1,2008)%2008; y=modExp_int(y,10,2008); } return res; } int modExp2008v2() { int a=0; for(int i=0;i<2008;i++){ a=(a*10+1)%2008; } return modExp_int(a,111,2008); } int main() { printf("%d\n",modExp2008()); printf("%d\n",modExp2008v2()); system("pause"); }