Beautiful Palindrome Number
Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 1229 Accepted Submission(s): 807
Total Submission(s): 1229 Accepted Submission(s): 807
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 .
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) .
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
题意:
求1到10的n次方的范围内,满足:
1、是回文数;
2、回文的前半部分满足升序;
///AC代码
/* ***********************************************
┆ ┏┓ ┏┓ ┆
┆┏┛┻━━━┛┻┓ ┆
┆┃ ┃ ┆
┆┃ ━ ┃ ┆
┆┃ ┳┛ ┗┳ ┃ ┆
┆┃ ┃ ┆
┆┃ ┻ ┃ ┆
┆┗━┓ 马 ┏━┛ ┆
┆ ┃ 勒 ┃ ┆
┆ ┃ 戈 ┗━━━┓ ┆
┆ ┃ 壁 ┣┓┆
┆ ┃ 的草泥马 ┏┛┆
┆ ┗┓┓┏━┳┓┏┛ ┆
┆ ┃┫┫ ┃┫┫ ┆
┆ ┗┻┛ ┗┻┛ ┆
************************************************ */
#include <iostream>
#include <set>
#include <map>
#include <stack>
#include <cmath>
#include <queue>
#include <cstdio>
#include <bitset>
#include <string>
#include <vector>
#include <iomanip>
#include <cstring>
#include <algorithm>
#include <functional>
#define PI acos(-1)
#define eps 1e-8
#define inf 0x3f3f3f3f
#define debug(x) cout<<"---"<<x<<"---"<<endl
typedef long long ll;
using namespace std;
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)
{
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;
scanf("%d", &t);
while (t--)
{
int xx;
scanf("%d", &xx);
printf("%d\n", sum[xx]);
}
return 0;
}
/************************************************
┆ ┏┓ ┏┓ ┆
┆┏┛┻━━━┛┻┓ ┆
┆┃ ┃ ┆
┆┃ ━ ┃ ┆
┆┃ ┳┛ ┗┳ ┃ ┆
┆┃ ┃ ┆
┆┃ ┻ ┃ ┆
┆┗━┓ ┏━┛ ┆
┆ ┃ ┃ ┆
┆ ┃ ┗━━━┓ ┆
┆ ┃ AC代马 ┣┓┆
┆ ┃ ┏┛┆
┆ ┗┓┓┏━┳┓┏┛ ┆
┆ ┃┫┫ ┃┫┫ ┆
┆ ┗┻┛ ┗┻┛ ┆
************************************************ */