1 条题解
-
0
C :
#include <stdio.h> #include <string.h> char data[30];/*存储转换后的进制*/ int len;/*进制长度*/ int temp[20];/*存储进制数*/ int main() { int n; int i,j,a,z; int x,flag,nn=0;/*flag做标志*/ while(scanf("%d",&n)&&n!=0) { z=0; /*初始化temp*/ for(j=0;j<20;j++) temp[j]=0; for(i=2;i<=16;i++) { /*每次都初始化data数组*/ for(j=0;j<30;j++) data[j]=0; flag=1; len=0; x=n; while(x) { data[len++]=x%i; x/=i; } for(j=0;j<len;j++) { if(data[j]!=data[len-1-j]) { flag=0; break; } } if(flag) temp[z++]=i; } if(nn) printf("\n"); else nn=1; if(z>0) { printf("Number %d is palindrom in basis",n); for(j=0;j<z;j++) printf(" %d",temp[j]); } else printf("Number %d is not a palindrom",n); } return 0; }
C++ :
#include <bits/stdc++.h> using namespace std; int change(int data,int base) { int a[25]; int len=0; while(data){ a[len++]=data%base; data=data/base; } for (int i=0;i<len/2;i++){ if (a[i]!=a[len-1-i]) return 0; } return 1; } int main() { int n; while(scanf("%d",&n)!=EOF&&n){ queue<int> q; for (int is=2;is<=16;is++){ if (change(n,is)) q.push(is); } if (q.size()>0){ printf("Number %d is palindrom in basis",n); while(q.size()){ printf(" %d",q.front()); q.pop(); } printf("\n"); } else printf("Number %d is not a palindrom\n",n); } return 0; }
- 1
信息
- ID
- 840
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者