HDU 1002 A + B Problem II 高精度加法程序 覆盖大量字符串处理基础 详细注释
来源:互联网 发布:python 中英文混合 编辑:程序博客网 时间:2024/05/18 20:31
高精度A+B题,等于一个小模拟吧,涉及很多字符串基础知识,个人觉得是验证自己是否掌握字符串基础的一道好题。
题意:A+B=C 。 别逗了,还要我说?
解法:字符串处理,没什么好说的,注释里清清楚楚(其实是我想睡觉了)。
注意事项:注意格式问题,等式有空格,输出组间有空行(吐槽:HDU真是无聊)。
想交题目就戳我啊
下面是我的AC代码:
#include <iostream>#include <string>using namespace std;string str1,str2;int main(){ int t,kase=1; cin >> t; //由于本题没有多组数据输入要求,所以我没写while(cin >> t) while(t--) //其实写上面说的ACM标准输入那条语句也一样AC { cin >> str1 >> str2; int len1,len2; len1=str1.size(); //测字符串长度函数,string类字符串用这个;char型用strlen() len2=str2.size(); if(len1>=len2) //谁大就用谁做基准,下面else语句重复的; { if(kase>1) //如果是第一个结果,就不输出空行,道理是这样的吧 cout << endl; cout << "Case " << kase++ << ':' << endl; //预处理一大堆垃圾 cout << str1 << " + " << str2 << " = " ; //讲道理这个不用解释了吧 int i,j; for(i=len1-1,j=len2-1;j>=0;i--,j--) //以str1做基准进行字符加法,没毛病,嗯! { str1[i]+=str2[j]-'0'; //减'0'是因为数字的ASCll值从48开始 if(str1[i]>'9') //大于9就进1啊,注意比较的是字符,注意其ASCll值 { str1[i]-=10; //当前位减10给进位 str1[i-1]+=1; //下一位进1 *注意这里是真的进1,不是字符'1' } } if(str1[0]>'9') //细节,如果首位要进位,那就进行如下处理 { str1[0]-=10; for(int k=len1+1;k>=1;k--) //向后挪一个位置给新来的最高位,注意要把字符串结束标志'\0'一起挪(易错点) str1[k]=str1[k-1]; str1[0]=1; //无论数据是什么,进位最大只能是1(自己写几个数试试?) } cout << str1 << endl; //打印结果 } else //同上,只是换个基准串而已 { if(kase>1) cout << endl; cout << "Case " << kase++ << ':' << endl; cout << str1 << " + " << str2 << " = " ; int i,j; for(i=len1-1,j=len2-1;i>=0;i--,j--) { str2[j]+=str1[i]-'0'; if(str2[j]>'9') { str2[j]-=10; str2[j-1]+=1; } } if(str2[0]>'9') { str2[0]-=10; for(int k=len2+1;k>=1;k--) str2[k]=str2[k-1]; str2[0]=1; } cout << str2 << endl; } } return 0;}
0 0
- HDU 1002 A + B Problem II 高精度加法程序 覆盖大量字符串处理基础 详细注释
- hdu 1002 A + B Problem II(高精度加法)
- HDU 1002 A + B Problem II (高精度加法)
- HDU 1002 A+B Problem 高精度加法
- hdu1002 A + B Problem II(高精度加法)
- A + B Problem II(高精度加法)
- 高精度-HDU-1002-A + B Problem II
- HDOJ 1002 A + B Problem II //高精度加法
- HDOJ 1002 A + B Problem II(高精度加法)
- hdu-1002 A + B Problem II_(高精度加法)
- hdu 1002 A + B Problem II(大数模拟加法)
- HDU 1002 A + B Problem II (大数加法)
- Hdu oj 1002 A + B Problem II(大数加法)
- Hdu 1002 A + B Problem II(大整数加法)
- HDU-1002 A + B Problem II(大整数加法)
- HDOJ1002 A+B Problem II(高精度/大整数加法)
- Hdu 1002 A + B Problem II (高精度相加)
- HDU 1002 A + B Problem II(高精度)
- Android Webview详解
- 运用Hibernate机制,对mysql数据库中的表进行增,删,改,查
- Git配置(linux+windows)
- Golang概述
- 使用CMakeLists.txt创建一个简单的opengl程序
- HDU 1002 A + B Problem II 高精度加法程序 覆盖大量字符串处理基础 详细注释
- RecyclerView(三)——为RecyclerView增加下拉刷新和加载更多功能
- dubbo源码分析-客户端DubboInvoker调用服务端体会Netty的非阻塞IO使用
- 信号卷积
- django搭建个人博客03,编写首页
- 使用Python计算前10000个质数表
- Eclipse快捷键冲突之和系统冲突的快捷键
- Golang 基础
- java.lang.UnsatisfiedLinkError: Couldn’t load locSDK3: findLibrary returned null