题解 | 自守数

#include <iostream>
#include <string>
#include <cmath>
using namespace std;

int main() {
    int num;
    cin >>num;
    int cnt = 0;
    for(int i=0 ; i<=num ; i++){
        string str = to_string(i);
        int len =str.length();
        int yushu = (i*i) % (int)pow(10,len);
        if(yushu == i){
            cnt++;
        }
    }
    
    cout << cnt << endl;
    
}

思路是比较这个数平方之后的尾数是不是跟本身相等,求尾数的方式是对10的幂次取余,幂次取决于这个数本身的长度,比如25,长度是2,所以它的平方应该对10^2取余,以此类推

全部评论

相关推荐

迷茫的大四🐶:都让开,我tm来啦
点赞 评论 收藏
分享
头像
2025-12-27 13:01
三峡大学 C++
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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