很有意思,求吉利数,数据范围超级大,但实际上过来题目样例那个数之后就不再变化了,离线计算一个表出来就好了
//leehaoze
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
const int INF = 1 << 29;
#define INC_SAT(val) (val = ((val)+1 > (val)) ? (val)+1 : (val))
#define ARR_SIZE(a) ( sizeof( (a) ) / sizeof( (a[0]) ) )
#define ULL unsigned long long
int data[] = {1, 199981, 199982, 199983, 199984, 199985, 199986, 199987, 199988, 199989, 199990, 200000, 200001,
1599981, 1599982, 1599983, 1599984, 1599985, 1599986, 1599987, 1599988, 1599989, 1599990, 2600000,
2600001, 13199998, 35000000, 35000001, 35199981, 35199982, 35199983, 35199984, 35199985, 35199986,
35199987, 35199988, 35199989, 35199990, 35200000, 35200001, 117463825, 500000000, 500000001, 500199981,
500199982, 500199983, 500199984, 500199985, 500199986, 500199987, 500199988, 500199989, 500199990,
500200000, 500200001, 501599981, 501599982, 501599983, 501599984, 501599985, 501599986, 501599987,
501599988, 501599989, 501599990, 502600000, 502600001, 513199998, 535000000, 535000001, 535199981,
535199982, 535199983, 535199984, 535199985, 535199986, 535199987, 535199988, 535199989, 535199990,
535200000, 535200001, 1111111110};
void Search(char *ipt) {
int num = atoi(ipt);
int count = 0;
while (num >= data[count]) {
++count;
}
printf("%d %d\n", count, data[count - 1]);
}
int main() {
char ipt[200];
while (scanf("%s", ipt) != EOF) {
if (strlen(ipt) >= 12) {
printf("83 1111111110\n");
} else {
Search(ipt);
}
}
}