HJ99 自守数

知识点数论

描述

自守数是指这样一个自然数 x,其平方的尾数等于自身。更具体的说,即 x2 的末尾若干位恰好等于 x,例如:

∙ ∙ 252=625,625 的末尾两位恰好是 25;

∙ ∙ 762=5776,5776 的末尾两位恰好是 76;

∙ ∙ 9 376(2次幂)=87 909 37693762=87909376,87 909 37687909376 的末尾四位恰好是 9 3769376。

现在,对于给定的 nn,请统计 00 到 nn 之间的自守数个数。

输入描述:

输入一个整数 n(1≦n≦104)n(1≦n≦104) 代表自守数的范围。

输出描述:

输出一个整数,代表 00 到 nn 之间的自守数个数。

示例1

输入:

复制代码
25

复制输出:

复制代码
5

复制说明:

复制代码
在这个样例中,0,1,5,6,250,1,5,6,25 是自守数。
cpp 复制代码
/*
本文系「人工智能安全」(微信公众号)原创,转载请联系本文作者(同博客作者)。
欢迎你转发分享至朋友圈,并给予「关注、星标、点赞」三连支持。互相欣赏,互相批判。
我是一名有诗人气质的网络安全工程师
期待与你的思想交流碰撞出智慧的花火
水木清华
2020-03-10
求自守数的解题思路
规律:个位数为 0、1、5、6 的数才可能是自守数,故采用筛选法,只判断符合该条件的数
思路1:可以把整数(数及其平方)转换为字符串,通过比较长字符串的末尾是否与短字符串相同即可
如:25 * 25 = 625,字符串'625'的末尾'25'与字符串'25'的相同
思路2:若该数的平方与该数的差,去模该数对应的各个进制位均等于零,则该数为自守数
如:25 * 25 = 625,625 - 25 = 600,600 % (10*1) = 0,600 % (10 * 2) = 0
*/
#include <iostream>
#include <string>
using namespace std;
//求整数 n 以内自守数的接口
int CalcAutomorphicNumbers(int n)
{
    int count = 0;
    for(int i = 0; i<= n; i++)
    {
        //仅对个位数符合条件的数执行自守数的判断
        if((i%10 == 0) || (i%10 == 1) || (i%10 == 5) || (i%10 == 6))
        {
            long j = i*i;
            string s1 = to_string(i);
            string s2 = to_string(j);
            int pos = s2.size()- s1.size();
            if(s2.find(s1,pos) != -1)
            {
                count++;
            }
        }
    }
    return count;
}
int main()
{
    int n;
    while(cin >> n)
    {
        cout << CalcAutomorphicNumbers(n) << endl;
    }
    return 0;
}
相关推荐
xuxigifxfh10 分钟前
牛客:HJ170 01序列
java·开发语言·算法·华为机考
朝朝辞暮i21 分钟前
C++ 第 33 课:事件循环——spin() 到底在干什么
开发语言·c++·算法
殷色玫瑰33 分钟前
AVL树:从平衡因子到四种旋转的完整实现
c语言·数据结构·c++·算法·visualstudio
进化中的刀盾兽1 小时前
从零实现 C++ AI 大模型接入 SDK(九):LLMManager 统一模型管理与请求路由
c++
会周易的程序员1 小时前
STVM OSAL 层架构设计文档
c++·物联网·嵌入式·虚拟机·iot·软plc·iec61131
.YM.Z1 小时前
C++——【红黑树】原理详解:定义、性质、插入变色与旋转实现
开发语言·c++
jidaowansui1 小时前
B3643 图的存储———>数组模拟邻接矩阵
算法
y1su2 小时前
Leetcode 二分模板
java·数据结构·算法·leetcode·排序算法
youshi66682 小时前
平衡车——PID算法优化
stm32·单片机·嵌入式硬件·算法·pid·平衡车
无名猿2 小时前
constexpr 能力扩张:从 C++11 到 C++20 的编译期计算
c++·性能优化·现代c++·编译期