平方末尾

来源:互联网 发布:华为 软件版本说明 编辑:程序博客网 时间:2024/04/29 11:07
平方末尾

(有错误之处,望各位指出,谢谢!)


能够表示为某个整数的平方的数字称为“平方数”
比如,25,64
虽然无法立即说出某个数是平方数,但经常可以断定某个数不是平方数。
因为平方数的末位只可能是:[0, 1, 4, 5, 6, 9] 这6个数字中的某个。
所以,4325435332必然不是平方数。


如果给你一个2位或2位以上的数字,你能根据末位的两位来断定它不是平方数吗?


请计算一下,一个2位以上的平方数的最后两位有多少种可能性?


分析:

其实此题只需要算4-100的平方,他们平方结果后两位有多少种不同就是此题答案。因为不管几位数的平方,只要末尾两位数相同,256,2256他们平方后两位都是一样的。

所以只需要求得4-100平方的后两位有多少种即可。



C语言实现:

#include<stdio.h>
int has(int *
b,int a,int c){//自定义方法,第一个参数:b数组,第二个参数:a数组中的一个值,第三个参数:b数组的长度
int i;
for(i = 0; i <= c ;i++){//开始遍历b数组
if(
b[i] ==a)//如果b数组中有一个值与a相同,那么代表已经储存了该种情况,提前跳出for循环,开始下一次比较
return 0;//代表已经有一样的了 
}
return 1;//没有找到 
}
int main(){
int a[100]; //保存4-100平方的后两位
int b[100];//储存所有不同的结果
int i,c = 0;//c用来储存b数组的长度
for(i= 4;i <= 100 ;i++){//开始计算
a[i] = (((i*i)/10%10)*10)+((i*i)%10);//将结果的后两位取出来,保存在a数组中
for(i = 4 ; i<= 100;i++)//开始筛选不同的结果,将结果保存在b数组中
if(has(b,a[i],c)){//没有重复,将a[i]的值添加进b数组中
b[c] = a[i];
c++;//数组的长度增加
}
printf("%d",c); //a数组遍历完毕,输出b的长度c,也就是有多少种不同可能性
return 0;
}

答案:22种

16 25 36 49 64
81 0 21 44 69
96 56 89 24 61
41 84 29 76 9
4 1

因为有些结果为0开头,所以c语言输出就省略了,就输出单个数字

补全:

16 25 36 49 64
81 00 21 44 69
96 56 89 24 61
41 84 29 76 09
04 01

原创粉丝点击