30 加到 94
正解,請問您是甚麼靈感找出答案?
C 語言程式求解#include int main(void){int m,n,k,sum1,sum2;for(k=1; k<=100; k++){for(n=1; n<=1000; n++){if ((k+n)<101) sum1=n*k+n*(n+1)/2-4030;if (sum1==0) break;if (sum1<0) {while (k+n>100) m=k+n-100; sum2=sum1 + m*(m+1)/2; }if (sum2==0) break;}if (sum1==0) break; if (sum2==0) break;}printf("\n k+n=%5d, K+1=%5d, m=%5d\n, sum1=%5d, sum2=%5d" ,k+n,k+1,m,sum1,sum2);return 0;}
正解之一,這題還有第二解。謝謝您分享程式碼,排列組合類型,適合寫程式暴力破解。
作者已經移除這則留言。
是啊,可以跨過 100
應該還有四組解46 到 555 到 3069 到 5176 到 60
哇!厲害!超乎預期,你還找出所有的解,我只是憑直覺應該有第二解。我的程式放在 這裡
C 語言程式碼#include int main(void){int n,k;int sum;for(n=1;n<101;n++)for(k=1;k<101;k++){sum=n*(n+1)/2+(100+k)*(101-k)/2;if(sum==4030)printf("k=%5d n=%5d\n",k,n);}return 0;}
謝謝補充程式碼
30 加到 94
回覆刪除正解,請問您是甚麼靈感找出答案?
刪除C 語言程式求解
回覆刪除#include
int main(void)
{
int m,n,k,sum1,sum2;
for(k=1; k<=100; k++)
{
for(n=1; n<=1000; n++)
{
if ((k+n)<101) sum1=n*k+n*(n+1)/2-4030;
if (sum1==0) break;
if (sum1<0) {while (k+n>100) m=k+n-100; sum2=sum1 + m*(m+1)/2; }
if (sum2==0) break;
}
if (sum1==0) break; if (sum2==0) break;
}
printf("\n k+n=%5d, K+1=%5d, m=%5d\n, sum1=%5d, sum2=%5d" ,k+n,k+1,m,sum1,sum2);
return 0;
}
正解之一,這題還有第二解。
刪除謝謝您分享程式碼,排列組合類型,適合寫程式暴力破解。
作者已經移除這則留言。
回覆刪除是啊,可以跨過 100
刪除應該還有四組解
回覆刪除46 到 5
55 到 30
69 到 51
76 到 60
哇!厲害!超乎預期,你還找出所有的解,我只是憑直覺應該有第二解。
刪除我的程式放在 這裡
作者已經移除這則留言。
回覆刪除C 語言程式碼
回覆刪除#include
int main(void)
{
int n,k;
int sum;
for(n=1;n<101;n++)
for(k=1;k<101;k++)
{sum=n*(n+1)/2+(100+k)*(101-k)/2;
if(sum==4030)
printf("k=%5d n=%5d\n",k,n);
}
return 0;
}
謝謝補充程式碼
刪除