ZSYhaouuan @ 2024-07-28 13:29:14
#include<bits/stdc++.h>
using namespace std;
int ans=0,x;
string n;
int f1(int x){
int t=0;
while(x!=0){
t=t*10+x%10;
x/=10;
}
return t;
}
int f2(int x,string s){
int len=s.size(),cnt=0;
for(int i=0;i<len;i++){
if(s[i]>='A'&&s[i]<='F'){
int t=s[i]-'A'+10;
cnt+=t;
}else{
int t=s[i]-'0';
cnt+=pow(x,len-i-1)*t;
}
}
return cnt;
}
int main(){
cin>>x>>n;
int m=f2(x,n);
for(int i=1;i<=30;i++){
if(f1(m)==m){
cout<<"STEP="<<i-1;
return 0;
}else{
m=f1(m)+m;
}
}
cout<<"Impossible!";
return 0;
}
by 120629q @ 2024-07-30 15:00:25
#include <bits/stdc++.h>
using namespace std;//大家都懂就不说了
int n;//题目中的N进制
string m;//题目中M有100位!!!必须用字符串(不太懂楼下的dalao如何做的用unsigned long long过的???求指导qwq)
int ans;
int p;
bool hw(string st)//判断是否回文
{
int ln=st.size();
for(int i=0;i<ln/2;i++)
if(st[i]!=st[ln-1-i])return 0;//若不了解这条公式,大家可以验证一下
return 1;
}
int zhuan(char x)//将字符转成数字
{
if(x>='0'&&x<='9')return int(x-48);
else//以下判断是因为有16进制
{
if(x=='A')return 10;
if(x=='B')return 11;
if(x=='C')return 12;
if(x=='D')return 13;
if(x=='E')return 14;
if(x=='F')return 15;
}
}
char zhuan_h(int x)//将数字转回字符
{
if(x>=0&&x<=9)return char(x+48);
else//和上面一样
{
if(x==10)return char('A');
if(x==11)return char('B');
if(x==12)return char('C');
if(x==13)return char('D');
if(x==14)return char('E');
if(x==15)return char('F');
}
}
string bian(string a,string b)//做加法
{
for(int i=0;i<b.size()/2;i++)//进行反转(楼下dalao用reverse(a.begin(), a.end());也是可行的,佩服)
swap(b[i],b[b.size()-1-i]);
string c="";//用来记录等会的和
int jw=0,aw=0,bw=0,cw=0;
for(int i=a.size()-1;i>=0;i--)
{
aw=zhuan(a[i]);//将a[i]转成数字
bw=zhuan(b[i]);//将b[i]转成数字
cw=(aw+bw+jw)%n;//看c字符串这一位是几
if(aw+bw+jw>=n)jw=1;//判断是否进位
else jw=0;
c=zhuan_h(cw)+c;//将这一位的数转回字符放在c字符串,注意:要放在在前面,因为是倒着算的
}
if(jw==1)c='1'+c;//千万不要忘记了最后一位还会进位
return c;//返回得出的结果
}
int main()
{
cin>>n;
cin>>m;
p=hw(m);//判断是否回文
while(p==0)
{
if(ans>30)//如果方案数>30输出“Impossible!”
{
cout<<"Impossible!";
exit(0);
}
ans++;//方案数累加
m=bian(m,m);//将M进行做加法
p=hw(m);//别忘了判断回文
}
cout<<"STEP="<<ans;//输出结果
return 0; //完美结束
}
by 120629q @ 2024-07-30 15:02:25
试试我的其实我也不知道对不对
by ZSYhaouuan @ 2024-07-30 22:25:19
@120629q 过了。但这需要70多行吗?。。。
by 120629q @ 2024-07-31 14:20:43
****