PAT 乙级 1091 N-自守数 (15 分)

1091 N-自守数 (15 分)

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

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

输入格式:

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

输出格式:

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

输入样例:

3
92 5 233

输出样例:

3 25392
1 25
No


 1 #include<iostream>
 2 
 3 using namespace std;
 4 
 5 int getDevide(int temp)
 6 {
 7     int num = 1;
 8     
 9     while(temp)
10     {
11         num *= 10;
12         temp /= 10;
13     }    
14         
15     return num;
16 }
17 
18 void deal(int temp)
19 {
20     int squTemp = temp*temp;
21     
22     for(int i=1;i<10;++i)
23     {
24         if(i*squTemp%getDevide(temp) == temp)
25         {
26             cout<<i<<" "<<i*squTemp<<endl;
27             return;
28         }
29     }
30     
31     cout<<"No"<<endl;
32 }
33 
34 int main()
35 {
36     int M,temp;
37       
38     cin>>M;
39     
40     for(int i=0;i<M;++i)
41     {
42         cin>>temp;
43         deal(temp);
44     }
45       
46     return 0;
47 }

 

posted on 2019-01-06 10:53  么么打123  阅读(357)  评论(0编辑  收藏  举报