60分跪求dalao帮助

P1579 哥德巴赫猜想(升级版)

WA了四个点
by ihan255 @ 2018-10-08 21:05:04


你的第二个数字可能会大于第三个数字,这样就不能保证前两个数字是最小的,因为如果你把第二个和第三个数字的位置对调就是一个更优解。
by duoluoluo @ 2018-10-08 21:23:48


@[duoluoluo](/space/show?uid=107640) 谢谢大佬QWQ
by ihan255 @ 2018-10-08 21:25:51


@[duoluoluo](/space/show?uid=107640) 还是错的呀,仍旧WA了4个点 ```cpp #include<iostream> using namespace std; bool pd(int n) { if(n==1) return 0; for(int i=2;i*i<=n;i++) if(n%i==0) return 0; return 1; } int main() { int i,j,n; cin>>n; for(i=2;i<=n;i++) for(j=2;j<=n-i;j++) if(pd(i)&&pd(j)&&pd(n-i-j)) { if(j<=n-i-j) cout<<i<<" "<<j<<" "<<n-i-j; else cout<<i<<" "<<n-i-j<<" "<<j; return 0; } return 0; } ```
by ihan255 @ 2018-10-08 21:29:35


@[wu55555](/space/show?uid=121281) 因为你会重复输出,比如i = 1,j = 2,k = 3(举个例子),你之后j循环到3,k循环到2的时候还会再重复输出。
by duoluoluo @ 2018-10-09 07:11:51


@[wu55555](/space/show?uid=121281) 不对,我刚才看了一眼,发现它只输出一行
by duoluoluo @ 2018-10-09 07:13:09


@[wu55555](/space/show?uid=121281) 我知道了,你没有判断0这个情况,因为你n - i - j可能会等于0。
by duoluoluo @ 2018-10-09 07:15:06


@[wu55555](/space/show?uid=121281) 我刚才把你的代码改了一下真的可以了2333
by duoluoluo @ 2018-10-09 07:16:10


哦哦哦~谢谢大佬,我已经AC了QWQ
by ihan255 @ 2018-10-10 21:48:14


@[duoluoluo](/space/show?uid=107640)
by ihan255 @ 2018-10-10 21:48:28


| 下一页