题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5062
2 1 6
9 258
题意:
求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; }
HDU 5062 Beautiful Palindrome Number(数学题)
原文地址:http://blog.csdn.net/u012860063/article/details/40450267