问题描述
- 求大神给个代码,c语,求指导
-
现在给你n个数,判断对每个数开平方后的和是不是一个整数。 比如: 4,9,16这三个数开平方后的和为9,是一个整数。 2,3,19这三个数开平方后的和为7.5051633134826458945661170495752......,是一个小数。 你的任务就是判断n个数开方后的和是不是一个整数。
输入
多组数据;
对于每组数据:
第一行一个n(n<=100,正整数)。
第二行n个数,保证都是不大于10^9的非负整数。
输出
每个数开平方后的和是整数则输出Yes,否则输出No。
样例输入3 4 9 16 3 2 3 16
样例输出
Yes No
解决方案
判断一个数是否是小数:取整之后与原数相减,如果都是整数,相减一定是0;如果原数不是整数,则相减之后一定不是0
解决方案二:
求大神指导c++
#include<math.h>
#include<stdio.h>
int main(void)
{
double x = 4.0,result,
result = sqrt(x); //result*result=x
return (result-floor(result))==0.0? true:false;
}
解决方案四:
#include <stdio.h>
#include <math.h>
#define N 105
int main(){
int num;
int i;
int arr[N];
bool flag;
while(scanf("%d", &num)){
flag = true;
for(i = 0; i < num; i++)
scanf("%d", &arr[i]);
for(i = 0; i < num; i++){
double tmp = sqrt(arr[i] * 1.0);
if(tmp != (int)tmp){
flag = false;
break;
}
}
if(flag) printf("Yes
");
else printf("No
");
}
return 0;
}
解决方案五:
整数开方后不是整数就是一个无理数,无理数相加不会出现有理数。也就是说,这组整数中,有一定不能开方,那他们的平方根之和不可能是整数。
时间: 2024-10-06 13:15:00