andre_joy

导航

USACO dualpal

题意:寻找n个在2~10进制里面转换后至少有两次是回文数字的严格大于S的数字。

mark:仔细一点就ok了。

代码:

/*
ID: andre_j2
LANG: C
TASK: dualpal
*/
#include <stdio.h>
#include <string.h>

int dd(char a[])
{
    int i,j;
    j = strlen(a)-1;
    for(i = 0; i < j; i++,j--)
        if(a[i] != a[j]) return 0;
    return 1;
}

int pd(int n)
{
    int m,i,j,f;
    char a[20];
    f = 0;
    for(i = 2; i < 11; i++)
    {
        m = n;
        j = 0;
        while(m)
        {
            a[j++] = m%i + '0';
            m /= i;
        }
        a[j] = '\0';
        if(dd(a)) f++;
        if(f == 2) return 1;
    }
    return 0;
}

main () {
    freopen("dualpal.in", "r", stdin);
    freopen("dualpal.out", "w", stdout);
    int n,s,i;
    scanf("%d%d", &n, &s);
    for(s++, i = 0; i < n; s++)
        if(pd(s))
        {
            printf("%d\n", s);
            i++;
        }
    exit (0);
}

posted on 2012-07-09 22:59  andre_joy  阅读(93)  评论(0编辑  收藏  举报