#include<bits/stdc++.h> using namespace std; int main() { int n,m; cin>>n>>m; int t; int p=0; for(int i=n;i<=m;i++) { t=int(pow(i,3))-int(pow(i-1,3)); int j=int(sqrt(t)); if(fabs(j-sqrt(t))<0.01) { for(int k=1;k<=j;k++) { if(j==int(pow(k,2))+int(pow(k-1,2))) { cout<<i<<" "<<k<<endl; p++; } } } } if(p==0) cout<<"No Solution"<<endl; return 0; }改错
时间: 2024-03-02 21:53:02 浏览: 96
这段代码的问题在于,如果不存在符合条件的解,它会输出"No Solution",但是如果存在符合条件的解,程序会直接退出而没有输出任何结果。这是因为在for循环中,如果找到符合条件的解后,没有进行任何标记或者计数,导致无法判断是否有解。因此,需要在循环外面定义一个变量p,用来记录找到的解的个数,然后在循环结束后,判断p是否为0,来输出相应的结果。修改后的代码如下:
```
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,m;
cin>>n>>m;
int t;
int p=0;
for(int i=n;i<=m;i++)
{
t=int(pow(i,3))-int(pow(i-1,3));
int j=int(sqrt(t));
if(fabs(j-sqrt(t))<0.01)
{
for(int k=1;k<=j;k++)
{
if(j==int(pow(k,2))+int(pow(k-1,2)))
{
cout<<i<<" "<<k<<endl;
p++;
}
}
}
}
if(p==0)
cout<<"No Solution"<<endl;
return 0;
}
```
阅读全文