|
5啊哈币
问题:把316这个数表示为两个数的和,其中一个数是13的倍数,另一个数是11的倍数
算法一:void main(){
int i;
for(i=1;13*i<316;i++)
if((316-13*i)%11==0)
printf("%d+%d=316\n",13*i,316-13*i);
}
输出结果:52+264=316
195+121=316
算法二:void main(){
int i;
for(i=1;i<316;i++)
if(!((316-i*13)%11))
break;
printf("%d+%d=316\n",i*13,316-i*13);
}
输出结果:52+246=316
为什么算法二有BUG....求解??????问题出在哪里? |
最佳答案
查看完整内容
问题出在break;上面。程序这样写的意思就是一旦找到符合条件的i后立即退出循环,这样肯定就不能把所有可能解都求出来了。将break;删除i就能遍历1~315,从而找出所有可能的解。
|