Hdu 2100 Lovekey 模拟大数相加<进位转换..>
2012-08-07 16:18
399 查看
[b]题意:[/b]
用A~Z表示0~25..
给出2个200以内的XYZ-26进制数..即a0 a1 a2 a3……an
求出和..用XYZ-26进制表示..
其中XYZ-26 -> 10进制是m = a0 * 26^(n-1) + a1 * 26^(n-2) + … + an-3* 26^2 + an-2*26 + an-1
[b]思路:[/b]
不用进行转换然后相加再换回去..
直接相加..
模拟进位..
[b]Tips:[/b]
※可以直接把短的加到长的字符串上..eg:ABC+CD就是 ABC
+ CD
------------
BFL
※ 主要是进位的时候要考虑清楚..
※ 在长字符串上处理..就不用担心不知道该在前面保留多少位的问题了..
※ 输出去前导无意义 ‘A' 的时候要考虑到AAAAA的情况..最后输出'A'
[b]Code:[/b]
View Code
高精度到此完一段落了..其实还有几题没做..到时候再说吧~Hdu 1250 1297 1905
用A~Z表示0~25..
给出2个200以内的XYZ-26进制数..即a0 a1 a2 a3……an
求出和..用XYZ-26进制表示..
其中XYZ-26 -> 10进制是m = a0 * 26^(n-1) + a1 * 26^(n-2) + … + an-3* 26^2 + an-2*26 + an-1
[b]思路:[/b]
不用进行转换然后相加再换回去..
直接相加..
模拟进位..
[b]Tips:[/b]
※可以直接把短的加到长的字符串上..eg:ABC+CD就是 ABC
+ CD
------------
BFL
※ 主要是进位的时候要考虑清楚..
※ 在长字符串上处理..就不用担心不知道该在前面保留多少位的问题了..
※ 输出去前导无意义 ‘A' 的时候要考虑到AAAAA的情况..最后输出'A'
[b]Code:[/b]
View Code
#include <stdio.h> #include <cstring> void add(char *a, char *b) { int i, j, k; int len1, len2; int tmp=0; len1 = strlen(a), len2 = strlen(b); for(i = len1-1, j = len2-1; i >= 0;){ if(j >= 0){ a[i] = a[i] - 'A' + b[j] + tmp; tmp = 0; if(a[i] > 'Z'){ a[i] -= ('Z' - 'A' + 1); tmp = 1; } --i, --j; } else{ a[i] = a[i] + tmp; tmp = 0; if(a[i] > 'Z'){ a[i] -= ('Z'-'A'+1); tmp = 1; } --i; } } if(tmp){ for(i = len1; i >= 0; --i) a[i+1] = a[i]; a[0] = 'B'; } } void outPut(char *a) { int len = strlen(a); bool flag = false; for(int i = 0; i < len; ++i){ if(a[i] != 'A') flag = true; if(flag) printf("%c", a[i]); } if(!flag) puts("A"); else puts(""); } int main() { char arr1[210], arr2[210]; int len1, len2; while(scanf("%s %s", arr1, arr2) != EOF) { len1 = strlen(arr1); len2 = strlen(arr2); if(len1 > len2){ add(arr1, arr2); outPut(arr1); } else{ add(arr2, arr1); outPut(arr2); } } return 0; }
高精度到此完一段落了..其实还有几题没做..到时候再说吧~Hdu 1250 1297 1905
相关文章推荐
- (26进制大数相加)hdu 2100 Lovekey
- HDU 2100 Lovekey(模拟26进制)
- Hdu 1133 Buy the ticket <卡特兰数+大数处理>
- HDU 1088 (模拟)使用<sstream>模版库
- <模板> Hdu 1402 A * B Problem Plus 大数乘法
- hdu 2100 Lovekey 大数加法
- HDU 2100 Lovekey 模拟26进制
- Hdu 1753 大明A+B <高精度小数相加>
- (HDU 5929)Basic Data Structure 双端队列+模拟 <2016CCPC东北地区大学生程序设计竞赛 - 重现赛 >
- HDU 2100 Lovekey 大数java
- HDU 1047(大数相加)(数组模拟)
- <c语言经典100例>c32 大数相加
- HDU 2100 Lovekey(26进制相加 数学啊)
- HDU-2100 Lovekey(模拟)
- HDU 2100-Lovekey-大树模拟26进制
- hdu 2100 大数相加
- HDU 5106 Bits Problem(数位DP->二进制大数模拟)@
- hdu--5128--计算几何<算不上.暴力模拟> && hdu--5131--初级cmp
- OC语法<4.5> Foundation框架中-集合的内存管理和集合之间的相互转换
- ModelConvertHelper(将DataTable转换成List<model>)