题解 | #自守数#

自守数

http://www.nowcoder.com/practice/88ddd31618f04514ae3a689e83f3ab8e

要找出自守数,必须找到它的特点:

  1. 自首数的 最后一位 除0外必须为 1、5、6
  2. 如果最后一位为0,那只有一个数成立,那就是 0本身

基于以上所得到的num,我们只需要验证平方的最后几位是否等于num即可.

#include<iostream>
using namespace std;

int main(){
    int n;
    while(cin>>n){
        int ans=0;
        for(int i=1;i<=n;i++){
            if(i%10==1||i%10==5||i%10==6){ //找到可能成为自守数的数
                int temp1=i, temp2=i*i;
                while(temp1){//验证后几位
                    if(temp2%10!=temp1%10) break;
                    temp1/=10;
                    temp2/=10;
                }
                if(temp1==0) ans++;
            }
        }
        cout<<ans+1<<endl;//带上0
    }
    return 0;
}
全部评论

相关推荐

07-03 11:02
中山大学 C++
字节刚oc,但距离九月秋招很近了有两段互联网实习,非腾讯字节。不敢赌转正,现在在纠结去还是不去如果实习俩月离职会有什么后果吗
阿城我会做到的:不去后悔一辈子,能否转正取决于ld的态度,只要他不卡,答辩就是走流程,个人觉得可以冲一把
投递字节跳动等公司8个岗位
点赞 评论 收藏
分享
牛客84809583...:举报了
点赞 评论 收藏
分享
每晚夜里独自颤抖:你cet6就cet6,cet4就cet4,你写个cet证书等是什么意思。专业技能快赶上项目行数,你做的这2个项目哪里能提现你有这么多技能呢
点赞 评论 收藏
分享
评论
8
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务