1 条题解
-
0
C :
#include<stdio.h> int transfer(int m,int change) { int a[100],j,length,low,high,key,saveM=m; for(j=0;m!=0;j++) { a[j]=m%change; m=m/change; } length=j-1; if(change>10) for(j=length;j>=0;j--) { if(a[j]==10) a[j]='A'; if(a[j]==11) a[j]='B'; if(a[j]==12) a[j]='C'; if(a[j]==13) a[j]='D'; if(a[j]==14) a[j]='E'; if(a[j]==15) a[j]='F'; } low=0; high=length; key=0; while(low<=high) { if(a[low]!=a[high]) key=1; low++;high--; } if(key==0) return change; else return 0; } void main() { int n,c,key1,k,b[100],i,temp; scanf("%d",&n); while(n!=0) { key1=k=0; for(c=2;c<=16;c++) { temp=transfer(n,c); if(temp!=0) { key1=1; b[k]=temp; k++; } } if(key1==0) printf("Number %d is not a palindrom",n); else { printf("Number %d is palindrom in basis",n); for(i=0;i<k;i++) printf(" %d",b[i]); } printf("\n"); scanf("%d",&n); } }
C++ :
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; char result[1000]; void base_convert(char num[],int s,int e) { int i,flag,k,j,a[1000],b[1000]; for(i=0;i<strlen(num);i++) { if(num[i]>='A'&&num[i]<='Z') a[i]=num[i]-55; else if(num[i]>='a'&&num[i]<='z') a[i]=num[i]-61; else a[i]=num[i]-48; } k=0; while(1) { for(i=0;i<strlen(num);i++) { if(a[i]!=0&&i<strlen(num)-1) { a[i+1]+=(a[i]%e)*s; a[i]/=e; } if(i==strlen(num)-1) { b[k++]=a[i]%e; a[i]/=e; } } flag=0; for(i=0;i<strlen(num);i++) if(a[i]!=0) flag=1; if(!flag) break; } for(j=0,i=k-1;i>=0;i--) { if(b[i]>=10&&b[i]<=35) result[j++]=b[i]+55; else if(b[i]>=36&&b[i]<=61) result[j++]=b[i]+61; else result[j++]=b[i]+48; } result[j]='\0'; } int main() { char s[1000],t[1000]; int i,flag,v[17]; while(scanf("%s",s)!=EOF,s[0]!='0') { memset(v,0,sizeof(v)); for(flag=0,i=2;i<=16;i++) { if(i!=10) base_convert(s,10,i); else strcpy(result,s); strcpy(t,result); reverse(result,result+strlen(result)); if(!strcmp(t,result)) { flag=1; v[i]=1; } } if(flag) { printf("Number %s is palindrom in basis",s); for(i=2;i<=16;i++) if(v[i]) printf(" %d",i); puts(""); } else printf("Number %s is not a palindrom\n",s); } return 0; }
Pascal :
var n,i,j,m,k,w,t,e:longint; a,b:array[1..1000000] of longint; begin readln(n); while n<>0 do begin fillchar(b,sizeof(b),0); w:=0; for k:= 2 to 16 do begin fillchar(a,sizeof(a),0); m:=n;i:=0; while m<>0 do begin inc(i); a[i]:=m mod k; m:=m div k end; t:=0; for j:=1 to i div 2 do if a[j]<>a[i+1-j] then begin t:=1;break;end; if t=0 then begin inc(w);b[w]:=k;end; end; if w=0 then writeln('Number ',n,' is not a palindrom') else begin write('Number ',n,' is palindrom in basis'); for e:=1 to w do write(' ',b[e]); writeln; end; readln(n); end; end.
Java :
import java.awt.List; import java.util.ArrayList; import java.util.Scanner; public class Main { public static boolean isPalindrom(String str){ int i=0,j=str.length()-1; while (i<j){ if (str.charAt(i)!=str.charAt(j)) { return false; } i++;j--; } return true; } public static void main(String[] args) { Scanner cin=new Scanner(System.in); while (cin.hasNext()){ int n=cin.nextInt(); if (n==0) { break; } boolean first=true,flag=true; for (int i = 2; i < 17; i++) { String str=Integer.toString(n, i); if (isPalindrom(str)) { flag=false; if (first) { first=!first; System.out.print("Number ");System.out.print(n);System.out.print(" is palindrom in basis "); System.out.print(i); }else { System.out.print(" ");System.out.print(i); } } } if (flag) { System.out.print("Number ");System.out.print(n);System.out.print(" is not a palindrom"); } System.out.println(); } } }
Python :
import string def baseconvert(n, base): digits = string.digits + string.ascii_lowercase res = "" while n: n, mod = divmod(n, base) res += digits[mod] return res def judge(s): return s == s[::-1] while True: n = input() if n == 0: break ans = [] for i in xrange(2,17): if judge(baseconvert(n,i)): ans.append(str(i)) if ans: print "Number %d is palindrom in basis %s" %(n, ' '.join(ans)) else: print "Number %d is not a palindrom" %(n)
- 1
信息
- ID
- 6268
- 时间
- 1000ms
- 内存
- 32MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者