您的位置:首页 > 其它

HDU 5062 Beautiful Palindrome Number(数学题)

2014-10-25 10:11 393 查看
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5062

Problem Description

A positive integer x can represent as (a1a2…akak…a2a1)10 or (a1a2…ak−1akak−1…a2a1)10 of
a 10-based notational system, we always call x is a Palindrome Number. If it satisfies 0<a1<a2<…<ak≤9,
we call x is a Beautiful Palindrome Number.

Now, we want to know how many Beautiful Palindrome Numbers are between 1 and 10N.



Input

The first line in the input file is an integer T(1≤T≤7),
indicating the number of test cases.

Then T lines follow, each line represent an integer N(0≤N≤6).



Output

For each test case, output the number of Beautiful Palindrome Number.



Sample Input

2
1
6




Sample Output

9
258




Source

BestCoder Round #13

题意:

求1到10的n次方的范围内,满足:

1、是回文数;

2、回文的前半部分满足升序;

打表代码:

#include <cstdio>
#include <cstring>
int find_num(int num)
{
    int a[17];
    memset(a,0,sizeof(a));
    int L = 0;
    while(num)
    {
        a[++L] = num%10;
        num/=10;
    }
    for(int i = 1; i <= L/2; i++)//回文
    {
        if(a[i] != a[L-i+1])
            return 0;
    }
    for(int i = 1; i < L/2+L%2; i++)//升序
    {
        if(a[i+1] <= a[i])
            return 0;
    }
    return 1;
}
int main()
{
    int sum[17];
    memset(sum,0,sizeof(sum));
    sum[0] = 1;
    for(int i = 1; i <= 1000000; i++)
    {
        int flag = find_num(i);
        if(flag)
        {
            //printf("num::%d\n",i);
            if(i <= 10)
                sum[1]++;
            if(i <= 100)
                sum[2]++;
            if(i <= 1000)
                sum[3]++;
            if(i <= 10000)
                sum[4]++;
            if(i <= 100000)
                sum[5]++;
            if(i <= 1000000)
                sum[6]++;
        }
    }
    int t;
    for(int i = 0; i <= 6; i++)
    {
        printf("%d::%d\n",i,sum[i]);
    }
    return 0;
}


代码如下:

#include <cstdio>
int main()
{
    int t;
    scanf("%d",&t);
    while(t--)
    {
        int n;
        scanf("%d",&n);
        if(n == 0)
            printf("1\n");
        else if(n == 1)
            printf("9\n");
        else if(n == 2)
            printf("18\n");
        else if(n == 3)
            printf("54\n");
        else if(n == 4)
            printf("90\n");
        else if(n == 5)
            printf("174\n");
        else if(n == 6)
            printf("258\n");
    }
    return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: