欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

PAT 1091 N-自守数标记 15 个知识点:枚举拆分字符串

最编程 2024-03-17 19:18:18
...

1091 N-自守数 - PAT (Basic Level) Practice (中文) (pintia.cn)

自守数的定义 image.png

看了自守数的定义,我们知道并不是一定说 k2 k^2 kk 的后两位相同的才是自守数,

而是要比较kk k2 k^2 值的 自守数位数 的值相同才是自守数。 比如:

比如当自守数为1的时候,   

k=5,那么k^2 =25    ,根据自守数的位数进行比较,自守数是1,比较后1位,

发现k和k^2的后一位都是5,相同,那么称15的自守数。

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;
}

image.png