描述
自守数是指一个数的平方的尾数等于该数自身的自然数。例如:25^2 = 625,76^2 = 5776,9376^2 = 87909376。请求出n(包括n)以内的自守数的个数
数据范围: 1 \le n \le 10000 \1≤n≤10000
输入描述:
int型整数
输出描述:
n以内自守数的数量。
示例1
输入:
6
复制输出:
4
复制说明:
有0,1,5,6这四个自守数
示例2
输入:
1
复制输出:
2
复制说明:
有0, 1这两个自守数
#include <string.h>
#include <vector>
#include <bits/stdc++.h>
std::string itoa(int num)
{
std::stringstream oss;
oss << num;
return oss.str();
}
int autoNumber(int num)
{
int count = 1;
for(int i = 1; i <= num; ++i)
{
int square = i * i;
std::string strnum = itoa(square);
// int len = strnum.length();
std::string stri = itoa(i);
std::string subStr = strnum.substr(strnum.length()-stri.length(), stri.length());
if(subStr == stri)
{
count++;
}
}
return count;
}
int main()
{
int n;
std::cin >> n;
std::cout << autoNumber(n) << std::endl;
return 0;
}