我已经开始解决欧拉的问题了,欧拉23中有一个错误让我烦恼。 问题是什么?
#include <iostream>
using namespace std;
int main() {
long long res=0;
for (int answer=1;answer<=28123;answer++){
bool tri=false;
if (answer%6==0 || answer%20==0) continue;
for (int i=12;i<=answer;i++){
if (abs(answer-i)%20==0) tri=true;break;
}
if (!tri) res+=answer;
}
cout << res << endl;
return 0;
}
我的程序背后的逻辑是:每个丰富的数字可以被20或6整除,所以我看是否可以写一个数字,其中一个数字可被6整除,一个数字可被20整除。在代码的顶部:
if (answer%6==0 || answer%20==0) continue;
如果有一个可被20或6整除的数字,我继续使用continue。 问题是什么? 是因为我的解决方案吗?
答案 0 :(得分:1)
该行的意图
if (abs(answer-i)%20==0) tri=true;break;
未在代码中正确表达。它相当于:
if (abs(answer-i)%20==0)
{
tri=true;
}
break;
我怀疑这不是你的意思。它必须是:
if (abs(answer-i)%20==0)
{
tri=true;
break;
}