1 条题解
-
1
#include<bits/stdc++.h> using namespace std; int n,ans[1010],k; string m; bool b=0; bool isr(int a[],int len) { int l=1; int r=len; bool bb=1; while(l<=r) { if(a[l]!=a[r]) { bb=0; break; } l++; r--; } return bb; } void add(int a[],int l) { for(int i=1; i<=(l-1)/2+1; i++) { a[i]=a[i]+a[l-i+1]; a[l-i+1]=a[i]; } for(int i=1; i<=999; i++) { int x=a[i]; a[i]=x%n; a[i+1]+=x/n; } // for(int i=l+10; i>=1; i--)cout<<ans[i]; // cout<<endl; } int main() { cin>>n>>m; for(int i=0; i<=m.size()-1; i++)if('0'<=m[i]&&m[i]<='9')ans[m.size()-i]=m[i]-'0'; else ans[m.size()-i]=m[i]-'A'+10; for(k=0; k<=30; k++) { int p=1000; while(ans[p]==0&&p>0)p--; //cout<<p<<endl; b=isr(ans,p); // for(int i=p; i>=1; i--)cout<<ans[i]<<" "; // cout<<endl; if(b==1)break; add(ans,p); // for(int i=p; i>=1; i--)cout<<ans[i]<<" "; // cout<<endl<<endl; } if(b==0)cout<<"Impossible!"; else cout<<"STEP="<<k; return 0; }
- 1
信息
- ID
- 16
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 2
- 标签
- 递交数
- 54
- 已通过
- 23
- 上传者