>>437 とりあえず問1だけ #include <stdio.h> unsigned int f(unsigned int a,unsigned int b,unsigned int m) { /* a^b (mod m) */ unsigned int x=1; while(b!=0){ if(b%2==0){ a=(a*a)%m; b=b/2;
} else{ x=(x*a)%m; b=b-1; } } return x; } int main( void ) { int i; int answer=0; for(i=1;i<=99;i++) answer=(answer+f(i,i,1000))%1000; printf("1^1+2^2+3^3+...+99^99≡%d (mod 1000)",answer); return 0; } 実行結果:1^1+2^2+3^3+...+99^99≡920 (mod 1000) a^b ( mod m)の値を返す関数の引数やら色々unsigned int になってるけど 気に入らなかったらこのくらいの計算ならintに変えても大丈夫だろう というか、答えあってるのかな・・・これ