PATB级-1091 N-自守数 (15 分)

 题目链接

解题思路

构造一个判断自守数的函数isZS(int k, int nkk)

如果k==n*k*k,则k是自守数。

如果k!=n*k*k,分别用10,100,1000,。。。对n*k*k取模,求出末尾1,2,3...位,如果等于k,则k是自首数字

 

我的代码

#include 
#include
#include 
using namespace std;
bool isZS(int k, int nkk)//判断k是不是自守数字
{
	int mod=10;//取模,先mod=10, nkk % 10得到末尾1位数,然后mod=100,nkk % 100得到末尾2位数字 
	if(nkk == k)//n*k*k==k,则n*k*k结果的末尾几位数等于 K 
	{
		return true;
	}
	for(int i=0 ; i>m;
	for(int i=0; i>k;//输入某个数字k 
		int flag=0;//用来标记是否已经找到并输出了最小的 N 和 n*k*k 的值
		for(int n=0 ; n<10 ; n++)//n从[0,9]逐个尝试 
		{
			if( isZS( k , n*k*k ) )//如果k是自守数 
			{
				cout<

PATB级-1091 N-自守数 (15 分)_第1张图片

你可能感兴趣的:(PAT乙级)