PAT 1091 N-自守数标记 15 个知识点:枚举拆分字符串
最编程
2024-03-17 19:18:18
...
1091 N-自守数 - PAT (Basic Level) Practice (中文) (pintia.cn)
自守数的定义
看了自守数的定义,我们知道并不是一定说 和 的后两位相同的才是自守数,
而是要比较和值的 自守数位数
的值相同才是自守数。
比如:
比如当自守数为1的时候,
k=5,那么k^2 =25 ,根据自守数的位数进行比较,自守数是1,比较后1位,
发现k和k^2的后一位都是5,相同,那么称1是5的自守数。
ps:这道题目说了,N<=10。所以咱们在枚举自守数的时候不要超过10。
#include<bits/stdc++.h>
using namespace std;
int n=10;
int flag=0;
int main()
{
int m;cin>>m;
for(int i=0;i<m;i++)
{
int temp;cin>>temp;
flag = 0;
for(int j=1;j<=n;j++) //枚举n个自守数
{
int sum=j*temp*temp; //先乘完再转化为字符串
string str_sum=to_string(sum);
string str_temp=to_string(temp);
string str_wei=str_sum.substr(str_sum.size()-str_temp.size());
if(str_wei==str_temp)
{
cout<<j<<" "<<sum<<endl;
flag=1;
break;
}
}
if(!flag)cout<<"No"<<endl; //这个要放到枚举自守数之后
}
return 0;
}
上一篇: C - 自以为是的数字
下一篇: 自守数问题 (C++)