1091-N-自守数
leenickzh Lv4

如果某个数K的平方乘以N以后,结果的末尾几位数等于K,那么就称这个数为“N-自守数”.例如,而25392的末尾两位正好是92,所以92是一个3-自守数.

本题就请你编写程序判断一个给定的数字是否关于某个NN-自守数.

输入格式

输入在第一行中给出正整数M(≤20),随后一行给出M个待检测的、不超过1000的正整数.

输出格式

对每个需要检测的数字,如果它是N-自守数就在一行中输出最小的N的值,以一个空格隔开;否则输出No.注意题目保证N<10.

输入样例

1
2
3
92 5 233

输出样例

1
2
3
3 25392
1 25
No

分析

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include <iostream>
#include <vector>
#include <string>
#include <cmath>
using namespace std;

int check(int val,int nk2)
{
string s = to_string(val);
int i = s.length();
if(nk2%(int)(pow(10,i))==val)
{
return 1;
}
return 0;
}

int main()
{
int M;
cin>>M;
vector<int> vals;
int val;
vector<int> vals_states;
for(int i = 0;i < M;i++)
{
cin>>val;
vals.push_back(val);
}
int nk2;
for(int i = 0;i < M;i++)
{
vals_states.push_back(0);
for(int j = 1;j < 10;j++)
{
nk2 = j * vals[i] * vals[i];
if(check(vals[i],nk2)==1)
{
vals_states[i] = j;
break;
}
}
}
for(int i = 0;i < M;i++)
{
if(vals_states[i]==0)
{
cout<<"No"<<endl;
}else
{
printf("%d %d\n",vals_states[i],vals_states[i]*vals[i]*vals[i]);
}
}
return 0;
}
  • Post title:1091-N-自守数
  • Post author:leenickzh
  • Create time:2021-05-08 23:05:11
  • Post link:https://nickk.cn/2021/05/08/1091-N-自守数/
  • Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.
 Comments