uva 12050 - Palindrome Numbers(数论)
2014-04-11 09:18
477 查看
题目链接:uva 12050 - Palindrome Numbers
题目大意:给出i,输出第i个镜像数,不能有前导0.
解题思路:除了第一位的可能为9外,其他的都为10,这样可以根据i找到位数,然后对每一位进进计算输出。
样例:28 -> 191(边界的地方注意)
#include <stdio.h>
#include <string.h>
const int N = 20;
int n, t
;
void solve (int bit) {
int b = (bit+1)/2, ans
;
for (int i = 1; i <= b; i++) {
ans[i] = n / t[b-i] + (i == 1 ? 1 : 0);
n = n % t[b-i];
if (n == 0 && i != b) {
ans[i]--;
n = t[b-i];
}
}
ans[b]--;
for (int i = 1; i <= b; i++)
printf("%d", ans[i]);
if (bit%2 == 0) printf("%d", ans[b]);
for (int i = b - 1; i > 0; i--)
printf("%d", ans[i]);
printf("\n");
}
int main () {
t[0] = 1;
for (int i = 1; i <= 9; i++)
t[i] = t[i-1] * 10;
while (scanf("%d", &n) == 1 && n) {
for (int i = 1; i; i++) {
int k = t[(i-1)/2] * 9;
if (k >= n) {
solve (i);
break;
}
n -= k;
}
}
return 0;
}
题目大意:给出i,输出第i个镜像数,不能有前导0.
解题思路:除了第一位的可能为9外,其他的都为10,这样可以根据i找到位数,然后对每一位进进计算输出。
样例:28 -> 191(边界的地方注意)
#include <stdio.h>
#include <string.h>
const int N = 20;
int n, t
;
void solve (int bit) {
int b = (bit+1)/2, ans
;
for (int i = 1; i <= b; i++) {
ans[i] = n / t[b-i] + (i == 1 ? 1 : 0);
n = n % t[b-i];
if (n == 0 && i != b) {
ans[i]--;
n = t[b-i];
}
}
ans[b]--;
for (int i = 1; i <= b; i++)
printf("%d", ans[i]);
if (bit%2 == 0) printf("%d", ans[b]);
for (int i = b - 1; i > 0; i--)
printf("%d", ans[i]);
printf("\n");
}
int main () {
t[0] = 1;
for (int i = 1; i <= 9; i++)
t[i] = t[i-1] * 10;
while (scanf("%d", &n) == 1 && n) {
for (int i = 1; i; i++) {
int k = t[(i-1)/2] * 9;
if (k >= n) {
solve (i);
break;
}
n -= k;
}
}
return 0;
}
相关文章推荐
- UVA 12050 - Palindrome Numbers(数论+规律)
- Uva - 12050 Palindrome Numbers【数论】
- UVA 10627 - Infinite Race(数论)
- UVA 10303 - How Many Trees?(数论 卡特兰数 高精度)
- uva 11538 - Chess Queen(数论)
- UVA - 1435 Business Cards (数论)
- UVA 11916 - Emoogle Grid(数论)
- uva 11728 - Alternate Task(数论)
- UVA 1363 - Joseph's Problem(数论)
- UVa 10214 Trees in a Wood. (数论-欧拉函数)
- UVA 10791 Minimum Sum LCM (数论)
- 数论 - 高精度Fibonacci数 --- UVa 10183 : How Many Fibs ?
- UVA 10392 (暑假-数论- G - Factoring Large Numbers)
- uva 10726 Coco Monkey(数论)
- uva 10290 {Sum+=i++} to Reach N (数论-整数和素数)
- uva 10375 唯一分解定理 筛法求素数【数论】
- UVA 10139 Factovisors(数论)
- [UVa 11440]Help Tomisu 数论 欧拉函数+拓欧逆元
- UVA11388 GCD LCM(数论)
- uva 10780 - Again Prime? No Time.(数论)