/* rep03.c */ #include #include /* a を法 m の数に取り直す */ int mod(int a, int m) { int b=a%m; return b<0 ? b+m : b; } /* 法 m での a+b */ int modadd(int a, int b, int m) { return mod(a+b,m); } /* 法 m での a-b */ int modsub(int a, int b, int m) { return mod(a-b,m); } /* 法 m での a*b */ int modmul(int a, int b, int m) { return mod(a*b,m); } main() { int a,b,c,x,y,z,ans; printf("2 桁の好きな数字を思い浮かべてください。\n"); printf("その数を 3 で割った余りはいくつですか。"); scanf("%d",&a); printf("その数を 5 で割った余りはいくつですか。"); scanf("%d",&b); printf("その数を 7 で割った余りはいくつですか。"); scanf("%d",&c); x = modmul(70,a,105); y = modmul(21,b,105); z = modmul(15,c,105); ans = modadd(modadd(x,y,105),z,105); printf("それは %d ですね。\n",ans); } /* 実行例: 2 桁の好きな数字を思い浮かべてください。 その数を 3 で割った余りはいくつですか。1 その数を 5 で割った余りはいくつですか。2 その数を 7 で割った余りはいくつですか。2 それは 37 ですね。 */