平方末尾

平方末尾

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


能够表示为某个整数的平方的数字称为“平方数”
比如,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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值