POJ 2912 三个完全平方数 解题报告
POJ 2912 三个完全平方数 解题报告
编号: 2912
考查点:三重循环、简单数学
思路: 先找出三个完全平方数,然后结果基本就出来了。
提交情况: 没弄明白题WA了几次,后面直接AC了,BT版几行代码即可.
Source Code:
#include <iostream> using namespace std;
/* 变态版 int main() { int max;cin>>max; max>784? cout<<"361 529 784": max>529? cout<<"361 529" : cout<<"361"; } */
bool X(int a,int b) { char cha[4] = {0}; char chb[4] = {0}; sprintf(cha,"%d",a); sprintf(chb,"%d",b); for (int i=0;i<3;i++) { for (int j=0;j<3;j++) { if (cha[i] == chb[j]) { return false; } } }
return true; }
int main() { int MAX;cin>>MAX; int num[100] = {0}; char ch[4] = {0}; for (int i=12;i<32;i++) { num[i] = i*i; int m,n,s; m = num[i]%10; n = (num[i]/10)%10; s = (num[i]/100)%10; if (m==n || m==s || n==s) { num[i] = 0; } }
bool bflag = false; for (int i=12;i<32;i++) { if (num[i]) { for (int j=i+1;j<32;j++) { if (num[j] && X(num[i],num[j])) { for (int k=j+1;k<32;k++) { if (num[k] && X(num[i],num[k]) && X(num[j],num[k])) { if (MAX>num[k]) { cout<<num[i]<<" "<<num[j]<<" "<<num[k]; } else if (MAX>num[j]) { cout<<num[i]<<" "<<num[j]; } else { cout<<num[i]; } goto _label; }
} } } } } _label: return 0; } |
总结: 水题,感觉出题也不严谨。
By Ns517
Time 09.11.21