上传程序4个点只对了1个,下数据后发现答案与自己程序输出的答案完全一样,然而评测机显示的是WA 搞了好久都不知道问题出在哪里,求助大佬!感谢! 代码如下:
//P1015 回文数
#include<bits/stdc++.h>
using namespace std;
int a[100+10],b[100+10],top,step;
int n;
string s;
int main()
{
cin>>n>>s;
for(int i=s.size()-1;i>=0;--i)
{
if(s[i]>='0'&&s[i]<='9')a[++top]=b[top]=s[i]-'0';
else a[++top]=b[top]=s[i]-'A'+10;
}
while(1)
{
//for(int i=top;i>=1;--i)cout<<a[i]<<' ';
//cout<<endl;
bool flag=0;
for(int i=1;i<=top/2;++i)
{
if(a[i]!=a[top-i+1])
break;
if(i==top/2)flag=1;
}
if(flag)
{
cout<<"STEP="<<step;
return 0;
}
if(step>30)
{
cout<<"Impossible!";
return 0;
}
int topp=top;
for(int i=1;i<=top;++i)
{
b[i]+=a[top-i+1];
if(b[i]>=n)
{
++b[i+1];
b[i]-=n;
if(i==top)++topp;
}
}
top=topp;
for(int i=1;i<=top;++i)a[i]=b[i];
++step;
}
return 0;
}//P1015 回文数
#include<bits/stdc++.h>
using namespace std;
int a[100+10],b[100+10],top,step;
int n;
string s;
int main()
{
cin>>n>>s;
for(int i=s.size()-1;i>=0;--i)
{
if(s[i]>='0'&&s[i]<='9')a[++top]=b[top]=s[i]-'0';
else a[++top]=b[top]=s[i]-'A'+10;
}
while(1)
{
//for(int i=top;i>=1;--i)cout<<a[i]<<' ';
//cout<<endl;
bool flag=0;
for(int i=1;i<=top/2;++i)
{
if(a[i]!=a[top-i+1])
break;
if(i==top/2)flag=1;
}
if(flag)
{
cout<<"STEP="<<step;
return 0;
}
if(step>30)
{
cout<<"Impossible!";
return 0;
}
int topp=top;
for(int i=1;i<=top;++i)
{
b[i]+=a[top-i+1];
if(b[i]>=n)
{
++b[i+1];
b[i]-=n;
if(i==top)++topp;
}
}
top=topp;
for(int i=1;i<=top;++i)a[i]=b[i];
++step;
}
return 0;
}