不对
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");
}