您的位置:首页 > 其它

USACO 1.2.5 Dual Palindromes

2013-08-07 19:15 441 查看
USACO  1.2.5  DualPalindromes
     为颈椎+1 !为盲打+1 !

     题意:找出在大于某个数的范围内一定数目的满足要求的回文数,要求就是这个用十进制表示的数字用2~10进制表示时至少存在两个回文数。

     细节+代码:

 

    

/*
ID: 15257142
LANG: C
TASK: dualpal
*/

#include<stdio.h>
#include<string.h>

int trans(int num,int n){
int k,i,g;
char b[100],c[100],d[100];
k = -1;
while(num>0){
k++;
b[k] = (num%n)+'0';
num = num/n;
}
for(i = 0;i<=k/2;i++)
c[i] = b[i];
c[i] = '\0';
if(k%2==1)
g = k/2+1;
else
g = k/2;
for(i = k;i>=g;i--)
d[k-i] = b[i];
d[k-i] = '\0';
if(strcmp(c,d)==0&&c[0]!=0)
return 1;
else
return 0;
}

int main(){
freopen("dualpal.in","r",stdin);
freopen("dualpal.out","w",stdout);
int n,s,i,j,every,count;
scanf("%d%d",&n,&s);
count = 0;
for(i = s+1;;i++){
every = 0;
for(j = 2;j<=10;j++){
if(trans(i,j)==1)
every++;
if(every==2){
printf("%d\n",i);
count++;
break;
}
}
if(count==n)
break;
}
fclose(stdin);
fclose(stdout);
return 0;
}


 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: