7-3 自守数 (15分)

数学的世界有很多很漂亮的数字或者数字集合,比如梅森数,哥德巴赫猜想,水仙花数,完全数,自守数。今天我们就一起来探究一下自守数。自守数是指一个数的平方的尾数等于该数自身的自然数。例如:25^2 = 625,76^2 = 5776,9376^2 = 87909376。请求出n以内的自守数的个数

输入格式:

第一行输入n,随后输入n个数m。

输出格式:

在一行中输出m以内自守数的个数,所有输出在一行内完成,末尾没有多余空格。

输入样例:

5
1
2
3
4
5

输出样例:

2 2 2 2 3
#include <iostream>
#include <string>
#include<vector>
using namespace std;
int main()
{
    vector<int>a;
    int N;
    long n;
    cin >> N; 
    for (int i = 0; i <N; i++)
    {
        cin >> n;
        int ans = 2;
        for (long i = 3; i <= n; i++) 
        {
            if ((i % 10 == 1) || (i % 10 == 5) || (i % 10 == 6))
            {
                long n2 = i * i;
                string s1 = to_string(i);
                string s2 = to_string(n2);
                int pos = s2.size() - s1.size();
                if (s2.find(s1, pos) != -1)
                    ans++;
            }
        }
        a.push_back(ans);
    }
    for (int i = 0; i < a.size(); i++)
    {
        if (i!=a.size()-1)
        {
            printf("%d ", a[i]);
        }
        else
        {
            printf("%d", a[i]);
        }
    }

    return 0;
}

猜你喜欢

转载自www.cnblogs.com/luoyoooo/p/12215737.html