Michael_Liu @ 2023-07-26 11:02:02
#include <bits/stdc++.h>
using namespace std;
bool f=false,flag=true;
string hui(string n) // 倒转
{
string t="";
int len=n.size();
for(int i=len-1;i>=0;i--)
{
t=t+n[i];
}
return t;
}
bool check(string n) // 判断是否为回文数
{
string t=hui(n);
if(n==t)
{
return true;
}
else
{
return false;
}
}
int zci(char c) // 字符转整数
{
int num=0;
if(c<='9'&&c>='0')
{
num=c-'0';
}
else
{
if(c>='A'&&c<='Z')
{
num=c-'A'+10;
}
}
return num;
}
char zic(int n) // 整数转字符
{
char c;
if(n>=0&&n<=9)
{
c='0'+n;
}
else
{
c='A'+(n-10);
}
}
string jia(string a,string b,int n) // 字符串加法
{
a="0"+a;
b="0"+b;
string ans="";
int len=a.size();
int x=0,sum=0;
int num1=0,num2=0;
for(int i=0;i<=len-1;i++)
{
// cout<<len-i-1<<endl;
num1=zci(a[len-i-1]);
num2=zci(b[len-i-1]);
sum=num1+num2+x;
if(i==len-1)
{
if(sum==0)
{
break;
}
}
ans=zic(sum%n)+ans;
x=sum/n;
sum=0;
}
return ans;
}
int main()
{
int n,cnt=0;
cin>>n;
string s;
cin>>s;
string t1=s,t2="",sum="";
while(!check(t1))
{
t2=hui(t1);
sum=jia(t1,t2,n);
t1=sum;
cnt++;
if(cnt>=30)
{
break;
flag=false;
}
}
if(flag)
{
cout<<"STEP="<<cnt<<endl;
}
else
{
cout<<"Impossible!"<<endl;
}
return 0;
}
by furina_superstar @ 2023-07-26 11:33:35
@Michael_Liu 把O2关掉
by Michael_Liu @ 2023-07-26 11:52:47
@wangyansen 谢谢大佬,全过了
蒟蒻想问一下为啥开O2就不行了啊,谢谢大佬!
by furina_superstar @ 2023-07-26 14:26:24
@Michael_Liu 不太了解,好像是zic函数没有返回值,但是是char类型的,开了O2判断函数书写不标准(我也是听别人说的),你把char换成void应该也能过
by Michael_Liu @ 2023-07-26 14:50:55
@wangyansen 哎呀!把返回打漏了,刚才加了一句return c;
开O2也过了
谢谢大佬!