您的位置:首页 > 其它

POJ 2912 三个完全平方数 解题报告

2009-11-21 19:19 267 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: