想问问大神第三组为什么一直过不了,人傻了

#include<iostream>
#include<string>
#include<math.h>
#define MAX 2000
#define ll long long
using namespace std;
int N_to_ten(int N,int a[],int n)//把一个n进制数转化为10进制数
{
ll sum=0;
for(int i=0;i<n;i++)
{
sum=sum*N+a[i];
}
return sum;
}
bool hw(int a[],int n)
{
for(int i=0;i<n;i++)
{
if(a[i]!=a[n-i-1])
{
return false;
}
}
return true;
}
int Add(int N,int a[],int n)//实现进制的加减
{
int b[n];
for(int i=0;i<n;i++)
{
b[i]=a[n-i-1];
}
ll sum=0;
sum=N_to_ten(N,a,n)+N_to_ten(N,b,n);
return sum;
}
void panduan(int N,int a[],int n)
{
if(hw(a,n))
{
cout<<"STEP="<<0<<endl;
}
else
{

ll sum=Add(N,a,n);
int setp=1;
int k[MAX];
do
{
int i=0;
while(sum)
{
k[i]=sum%N;
sum/=N;
i++;
}
if(hw(k,i))
{
cout<<"STEP="<<setp<<endl;
return;
}
else
{
sum=Add(N,k,i);
setp++;
}
}while(setp<=30);
}
cout<<"Impossible!"<<endl;

}
int main()
{
int N;
cin>>N;
string str;
cin>>str;
//把这个str类型的数转化为int型
int length =str.size();
int a[MAX];//存放改变的字符串
int a_length=0;
for(int i=0;i<length;i++)
{
if(str[i]<65)
{
a[i]=str[i]-'0';//其他进制0-9的转化
a_length++;
}
else
{
a[i]=str[i]-55;//16进制ABCD的转化
a_length++;
}
}
/*-------------*/
panduan(N,a,a_length);
return 0;
}

0 条评论

目前还没有评论...

信息

ID
1304
难度
5
分类
模拟 点击显示
标签
递交数
8066
已通过
2523
通过率
31%
被复制
28
上传者