博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hdu 2100 Lovekey 模拟大数相加<进位转换..>
阅读量:4688 次
发布时间:2019-06-09

本文共 2049 字,大约阅读时间需要 6 分钟。

题意:

用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 

思路:

不用进行转换然后相加再换回去..

直接相加..

模拟进位..

Tips:

※可以直接把短的加到长的字符串上..eg:ABC+CD就是           ABC

                                     +  CD

                                   ------------

                                      BFL

※ 主要是进位的时候要考虑清楚..

※ 在长字符串上处理..就不用担心不知道该在前面保留多少位的问题了..

※ 输出去前导无意义 ‘A' 的时候要考虑到AAAAA的情况..最后输出'A'

 

Code:

 

View Code
1 #include 
2 #include
3 4 void add(char *a, char *b) 5 { 6 int i, j, k; 7 int len1, len2; 8 int tmp=0; 9 len1 = strlen(a), len2 = strlen(b);10 for(i = len1-1, j = len2-1; i >= 0;){11 if(j >= 0){12 a[i] = a[i] - 'A' + b[j] + tmp;13 tmp = 0;14 if(a[i] > 'Z'){15 a[i] -= ('Z' - 'A' + 1);16 tmp = 1;17 }18 --i, --j;19 }20 else{21 a[i] = a[i] + tmp;22 tmp = 0;23 if(a[i] > 'Z'){24 a[i] -= ('Z'-'A'+1);25 tmp = 1;26 }27 --i;28 29 }30 }31 if(tmp){32 for(i = len1; i >= 0; --i)33 a[i+1] = a[i];34 a[0] = 'B';35 }36 37 }38 39 void outPut(char *a)40 {41 int len = strlen(a);42 bool flag = false;43 for(int i = 0; i < len; ++i){44 if(a[i] != 'A') flag = true;45 if(flag) printf("%c", a[i]);46 }47 if(!flag) puts("A");48 else puts("");49 }50 51 int main()52 {53 char arr1[210], arr2[210];54 int len1, len2;55 while(scanf("%s %s", arr1, arr2) != EOF)56 {57 len1 = strlen(arr1);58 len2 = strlen(arr2);59 if(len1 > len2){60 add(arr1, arr2);61 outPut(arr1);62 }63 else{64 add(arr2, arr1);65 outPut(arr2);66 }67 }68 return 0;69 }

 

 

高精度到此完一段落了..其实还有几题没做..到时候再说吧~Hdu 1250 1297 1905

转载于:https://www.cnblogs.com/Griselda/archive/2012/08/07/2626903.html

你可能感兴趣的文章
数据结构化与保存
查看>>
如何避免在简单业务逻辑上面的细节上面出错
查看>>
Linux shell 命令判断执行语法 ; , && , ||
查看>>
vim代码格式化插件clang-format
查看>>
RTP Payload Format for Transport of MPEG-4 Elementary Streams over http
查看>>
Java环境变量设置
查看>>
【JBPM4】判断节点decision 方法3 handler
查看>>
filter 过滤器(监听)
查看>>
node启动时, listen EADDRINUSE 报错;
查看>>
杭电3466————DP之01背包(对状态转移方程的更新理解)
查看>>
kafka中的消费组
查看>>
python--注释
查看>>
SQL case when else
查看>>
MVc Identity登陆锁定
查看>>
cdn连接失败是什么意思_关于CDN的原理、术语和应用场景那些事
查看>>
ultraedit26 运行的是试用模式_免费试用U盘数据恢复工具 – 轻松找回U盘丢失的各种数据!...
查看>>
python sum函数导入list_python sum函数iterable参数为二维list,start参数为“[]”该如何理解...
查看>>
android 练习之路 (八)
查看>>
tp5 中 model 的聚合查询
查看>>
android wear开发之:增加可穿戴设备功能到通知中 - Adding Wearable Features to Notifications...
查看>>