Cassels方程是一个在数论界产生了巨大影响的不定方程:x2+y2+z2=3xyz。该方程有无穷多自然数解。
本题并不是要你求解这个方程,只是判断给定的一组 (x,y,z) 是不是这个方程的解。
输入格式:
输入在第一行给出一个不超过 10 的正整数 N,随后 N 行,每行给出 3 个正整数 0<x≤y≤z≤1000。
输出格式:
对于每一组输入,如果是一组解,就在一行中输出 Yes
,否则输出 No
。
输入样例:
2
1 1 1
5 6 7
输出样例:
Yes
No
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
话不多说,上代码!
#include<stdio.h>
#include<math.h>
int hanshuf(int a, int b, int c){
int hanshu;
hanshu=pow(a,2)+pow(b,2)+pow(c,2);
if(hanshu==3*a*b*c) {
return 1;}
else return 0;
}
int main(){
int N,i,hanshu,x,y,z;
scanf("%d",&N);
for(i=1;i<=N;i++){
scanf("%d %d %d",&x,&y,&z);
hanshu=hanshuf(x,y,z);
if(hanshu==1){
printf("Yes\n");
}
else{
printf("No\n");
}
}
return 0;
}
过程也是十分曲折,重点是搞懂 return值 函数反馈部分。
创新点在于。一道简单题,我硬生生写了个函数自己给自己找不痛快。服了。
下一次会更好,让自己代码更抽象:)