マスターオブ整数論大学への数学 *問い6-1 7で割ると5余り、9で割ると7余り11で割ると3余る数のうち3番目に小さいもの。 効率の悪い解法。 #include<stdio.h> int calc(int a1,int b1,int a2,int b2,int a3,int b3){ //この関数は小さい数だけ取り扱えます int stop=(a1*a2*a3)+a1+a2+a3+b1+b2+b3; while(1){ if(stop<b1||stop<b2||stop<b3)break; if(b1==b2&&b2==b3){ return b3; } if(b1<=b2&&b1<=b3){ b1+=a1; }else if(b2<=b3&&b2<=b1){ b2+=a2; }else if(b3<=b1&&b3<=b2){ b3+=a3; } } printf("解なし"); return -1; } int main(){ printf("問い6-1-1の答え%d\n",calc(7,5,9,7,11,3)+7*9*11*2); int t=calc(7,1,9,2,11,3); int ans=t; while(t<1000){ t+=7*9*11; ans=t; } ans=t-1000>1000-ans?ans:t; printf("問い6-1-2の答え%d",ans); }