USACO Dual Palindromes

USACO Dual Palindromes

洛谷传送门

JDOJ传送门

Description

如果一个数从左往右读和从右往左读都是一样,那么这个数就叫做“回文数”.例如,12321 就是一个回文数,而77778 就不是.当然,回文数的首和尾都应是非零的,因此0220 就不是回文数.事实上,有一些数(如21),在十进制时不是回文数,但在其它进制(如二进制时为10101)时就是回文数.

编一个程序,从文件读入两个十进制数N (1 <= N <= 15) S (0 < S < 10000)然后找出前N 个满足大于S 且在两种以上进制(二进制至十进制)上是回文数的十进制数,输出到文件上.

本问题的解决方案不需要使用大于4 字节的整型变量.

Input

只有一行,用空格隔开的两个数N 和S.

Output

N 行, 每行一个满足上述要求的数,并按从小到大的顺序输出.

Sample Input

3 25

Sample Output

26 27 28


题解:

打表出奇迹:

#include<bits/stdc++.h>
using namespace std;
int num[300]={0,1,2,3,4,5,6,7,8,9,10,15,16,
17,18,20,21,24,26,27,28,31,
33,36,40,45,46,50,51,52,55,
57,63,65,67,73,78,80,82,85,
88,91,92,93,98,99,100,104,105,107,
109,111,114,119,121,127,129,130,135,141,
142,150,151,154,160,164,170,171,173,178,
182,185,186,191,195,200,203,209,212,215,
219,227,235,242,246,252,255,257,264,273,
282,292,300,313,316,325,328,333,341,342,
343,357,364,365,373,381,393,400,414,427,
434,438,446,455,464,471,484,495,511,513,
546,555,560,564,585,624,626,644,646,651,
656,666,676,692,693,701,717,728,730,757,
771,777,787,819,820,856,868,910,939,975,
1023,1025,1066,1105,1221,1285,1312,1365,1432,1441,
1460,1539,1550,1640,1667,1755,1885,2000,2188,2268,
2293,2550,2565,2709,2730,2910,2920,2925,2997,3069,
3074,3075,3280,3315,3550,3591,3640,3663,3735,3740,
3855,3951,3999,4095,4097,4161,4225,4257,4289,4369,
4433,4593,4617,4681,5001,5049,5125,5189,5397,5461,
5740,5840,5854,6148,6200,6560,6562,6643,6697,6724,
6761,6825,6886,6889,6953,7300,7373,7381,7409,7447,
7462,7517,7667,7703,7777,7801,7997,8038,8119,8194,
8200,8258,8281,8322,8386,8578,8778,8802,9009,9103,
9201,9222,9490,9958,10252,10308,10658,10794,10858,10922,
10986,11253,11314,11757,11898,11950,12291,12355,12419,12483, 
12547,12654,12691,13107,13124,13131,13205,13286,13299,13331};
int n,s,g;
int main()
{
    cin>>n>>s;
    for(g=1;num[g]<=s;g++);
    for(int i=0;i<n;i++)cout<<num[g+i]<<endl;
    return 0;
}
posted @ 2020-10-20 10:09  Seaway-Fu  阅读(79)  评论(0编辑  收藏  举报