回文数
#include<iostream> #include<algorithm> #include<string> using namespace std; const int len = 1010; void print(int a[]) { for(int i=1;i<=a[0];i++) { if(a[i]<10) cout << a[i]; else cout <<(char)('A'+a[i]-10); } } int toNum(char ch) { if(ch>='0' && ch<='9') return ch-'0'; if(ch>='A' && ch<='Z') return ch-'A'+10; if(ch>='a' && ch<='z') return ch-'a'+10; return -1; } int match(int a[]) { for(int i=1;i<=a[0]/2;i++) { if(a[i]!=a[a[0]-i+1]) return 0; } return 1; } void add(int a[],int b[],int n) { for(int i=1;i<=a[0];i++) b[i]=a[a[0]-i+1]; b[0]=a[0];//print print(a); cout <<"+"; print(b); cout <<"="; a[0]++; for(int i=1;i<=a[0];i++) { a[i]+=b[i]; if(a[i]>=n) { a[i+1]++; a[i]%=n; } } if(a[a[0]]==0) a[0]--; print(a); cout <<endl; } int main(void) { int n,a[len],b[len]; cin >> n; string s; cin >> s; for(int i=0;i<len;i++) a[i]=b[i]=0; a[0]=s.length(); for(int i=1;i<=a[0];i++) a[i]=toNum(s[i-1]); int cnt=0; while(!match(a)) { cnt++; add(a,b,n); } cout << cnt; return 0; }