0分求助,大佬们帮我看看
查看原帖
0分求助,大佬们帮我看看
659308
aa9527楼主2022/7/12 16:34
#include<iostream>
#include<math.h>
#include<string.h>
using namespace std;
int fun1(int num[])			//判断位数 
{
	for(int i=99;i>=0;i--)
	{
		if(num[i]!=0)
			return i+1;
	}
}
void fun2(int num[],int *num_)	//数组元素顺序颠倒 
{
	for(int i=0;i<fun1(num);i++)
	{
		num_[i]=num[fun1(num)-i-1];	
	}	
}
bool fun3(int num[])		//判断回文 
{
	for(int i=0;i<fun1(num)/2;i++)
	{
		if(num[i]!=num[fun1(num)-i-1])
			return false;
	}
	return true;
}
int main()
{
	int N=0;
	char str[101]={0};
	cin>>N;
	cin.getline(str,101);
	cin.getline(str,101);
	int num[101]={0};
	for(int i=strlen(str)-1;i>=0;i--)//字符串换成整型数组,逆向存储,即num[0]存最低位 
	{
		if(str[i]>='0' && str[i]<='9')
			num[i]=str[i]-'0';
		else
			num[i]=str[i]-'A'+10;
	}
	for(int i=1;i<=30;i++)
	{
		int num_[101]={0};
		fun2(num,num_);			//数组元素顺序颠倒 
		for(int i=0;i<fun1(num);i++)	//数组相加 
		{
			num[i]=num[i]+num_[i];
			if(num[i]>=N)
			{
				num[i+1]++;
				num[i]=num[i]%N;
			}
		}
		if(fun3(num)==1)		//判断回文 
		{
			cout<<"STEP="<<i;
			return 0;
		}
	}
	cout<<"Impossible!";
	return 0;
}
2022/7/12 16:34
加载中...