USACO-Section1.2 Dual Palindromes

来源:互联网 发布:网络新技术有哪些() 编辑:程序博客网 时间:2024/06/14 13:08

2017-5-27

题目描述

求出大于S的至少在两种进制下表示是回文数的N个数

解答

进制转换与判断回文数的结合

代码

/*ID: 18795871PROG: dualpalLANG: C++*/#include<iostream>#include<fstream>#include<cstring>using namespace std;ifstream fin("dualpal.in");ofstream fout("dualpal.out");const int N = 100;char c[N+1];void cal(int a,int b){//将十进制a用b进制表示     char d[N+1];    int i=0;    while (a){        d[i++]=a%b+'0';        a/=b;    }     for (int j=0;j<i;j++) c[j]=d[i-j-1];    c[i]='\0';}bool res(char *a){    char b[N+1];    int l=strlen(a);    for (int i=0;i<l;i++) b[l-i-1]=a[i];    b[l]='\0';a[l]='\0';    if (strcmp(a,b)==0) return true;    return false;}int main(){    int i,j,n,s,r,sum;    fin>>n>>s;    sum=0;    for (i=s+1;;i++){        r=0;        for (j=2;j<=10;j++){            cal(i,j);            if (res(c)) r++;            if (r==2){                sum++;                fout<<i<<endl;                break;            }        }        if (sum==n) break;    }    return 0;}
原创粉丝点击