输出:
1 2 9
1 3 8
1 4 7
1 5 6
2 3 7
2 4 6
3 4 5
预期:
1 2 9
1 4 7
我只想打印其中至少有两个完美正方形的那些数组。 在上面的输出中,“ 1 2 9” 1和9和1和4都是完美的正方形。其余结果将跳过或不打印。
下面是我当前的代码:
#include <stdio.h>
#include <math.h>
int main(void) {
int num;
scanf("%d",&num);
if(num<200)
for(int a = 1; a < num; a++) {
for(int b = a + 1; b < num; b++) {
for(int c = b + 1; c < num; c++) {
if(a + b + c == num) {
printf("%d %d %d\n", a, b, c);
}
}
}
}
}
答案 0 :(得分:1)
这是一个非常简单的任务,您只需要检查每个{a,b,c}
中是否至少有两个正方形即可。也许这不是检查数字是否为正方形的最佳方法,但是您可以编写自己的函数来检查它。
#include <stdio.h>
#include <math.h>
int is_square(int x)
{
for(int i=1;i<=x/i;i++)
{
if(i*i==x)
{
return 1;
}
}
return 0;
}
int main(void)
{
int num;
scanf("%d",&num);
if(num<200)
{
for(int a = 1; a < num; a++)
{
for(int b = a + 1; b < num; b++)
{
for(int c = b + 1; c < num; c++)
{
if(a + b + c == num && is_square(a) + is_square(b) + is_square(c) >= 2)
{
printf("%d %d %d\n", a, b, c);
}
}
}
}
}
}