这是该题的链接http://acm.hdu.edu.cn/showproblem.php?pid=1002

具体的题的内容就不过多描述了,想必你已经知道了,当我看完这道题后就知道咋写了,可是这道题从开始写到最后accept却花了我好长时间。

先描述一下我的思路,当我看到第二个测试数据后就知道用可以表示范围最大的unsigned long long int 也是无法表示的,之前刷蓝桥杯里面的题,遇到过这种题

因为我对java熟悉一下,所以可以使用BigDecimal解决,或者用数组.所以我果断采用了数组,就是先把输入的数(字符串)存入两个数组里面,每个元素代表一位

,然后反转,这样可以先个位数相加,最后再把结果反转过来即可,由于写算法从java转c++不就,所以c++很多函数还不熟,还有这道题的一些细节等因素耽误了我一些时间。

不过最终成功accept;

下面是具体的代码。

 #include<bits/stdc++.h>

 using namespace std;
char arr2[]={''};//保存输入的第一个字符串
char arr3[]={''};//保存输入的第二个字符串
//声明的数组能放在main()之外就尽量放在main()之外,可以减少一些不常见的错误
int main()
{ int a ;
cin >>a;
int k=;//输出时用来标记次序
int s1=a;//保存a值
string a1,a2;
string arr1[a];//最终的和,
while(a--){
arr2[]={};
arr3[]={};
cin >> a1 >> a2;
reverse(a1.begin(),a1.end());//加数反转方便先从个位相加
reverse(a2.begin(),a2.end()); strcpy(arr2,a1.c_str());
strcpy(arr3,a2.c_str());//字符串变字符数组方便保存 int ml=max(a1.length(),a2.length());//长度较大的加数
int mll=min(a1.length(),a2.length());//长度较小的加数
int arr4[ml+]={};
int flag=;
for(int i=;i<ml;i++){
if(i<mll || a1.length()==a2.length()){ arr4[i]=(((int)arr2[i]-)+((int)arr3[i]-)+flag)%;//对应位相加
flag=(((int)arr2[i]-)+((int)arr3[i]-)+flag)/;//是否进位保存在flag里面
}
if(i>=mll && a1.length()>a2.length()){
arr4[i]=(((int)arr2[i]-)+flag)%;//48是保证char到int相互转变代表的数字不变
flag=(((int)arr2[i]-)+flag)/;
}
if(i>=mll && a2.length()>a1.length()){
arr4[i]=(((int)arr3[i]-)+flag)%;
flag=(((int)arr3[i]-)+flag)/;
}
if(i==ml- && flag==){//确定最高位是否为进位得到的1
arr4[i+]=;
} } if(arr4[ml]==){//最高位为0则不输出最高位,
reverse(arr4,arr4+(ml+));
for(int i=;i<ml+;i++){
arr1[a]+=((char)(arr4[i]+));
}
}
else{
reverse(arr4,arr4+(ml+));
for(int i=;i<ml+;i++){
arr1[a]+=((char)(arr4[i]+));
}
}
reverse(a1.begin(),a1.end());
reverse(a2.begin(),a2.end());//再此反转得到最终结果
cout <<"Case " <<k++<<":" << endl;
cout <<a1 <<" + " <<a2<<" = " << arr1[a] << endl;
if(a!=){
cout << endl;
} } return ;
}

结论:由于自己的c++水平一般,所以代码并不是很规范,请原谅。

杭电1002_A + B Problem II的更多相关文章

  1. 杭电1002-A + B Problem II

    #include<stdio.h>#include<string.h> int main(){    char str1[1001],str2[1001];    int t, ...

  2. 杭电oj-1002-A+B Problem

    Problem Description I have a very simple problem for you. Given two integers A and B, your job is to ...

  3. 杭电 2639 Bone Collector II【01背包第k优解】

    解题思路:对于01背包的状态转移方程式f[v]=max(f[v],f[v-c[i]+w[i]]);其实01背包记录了每一个装法的背包值,但是在01背包中我们通常求的是最优解, 即为取的是f[v],f[ ...

  4. 杭电OJ----1002A + B问题II(超大数计算问题)

    Problem Description I have a very simple problem for you. Given two integers A and B, your job is to ...

  5. 杭电ACM2058--The sum problem

    http://acm.hdu.edu.cn/showproblem.php?pid=2058 以为简单的穷举就完了,结果是一直Time Limit Exceeded.. 这是代码: #include ...

  6. 【单调栈】hdu 6319 杭电多校Problem A. Ascending Rating

    http://acm.hdu.edu.cn/showproblem.php?pid=6319 从后往前更新,维护一个递减单调栈(队列) 最近很多题都是单调栈... #define _CRT_SECUR ...

  7. 杭电-------2055An Easy Problem(C语言)

    #include<stdio.h> int main() { int m; int i; scanf("%d", &m); ]; int y; int z; ; ...

  8. 杭电ACM(1002) -- A + B Problem II 大数相加 -提交通过

    杭电ACM(1002)大数相加 A + B Problem II Problem DescriptionI have a very simple problem for you. Given two ...

  9. 杭电ACM刷题(1):1002,A + B Problem II 标签: acmc语言 2017-05-07 15:35 139人阅读 评

    最近忙于考试复习,没有多少可供自己安排的时间,所以我利用复习之余的空闲时间去刷刷杭电acm的题目,也当对自己编程能力的锻炼吧. Problem Description I have a very si ...

随机推荐

  1. JavaEE与Spring

    在Java社区中,Spring与Java EE之争是个永恒的话题.在这场争论中,来自两个阵营的布道师.架构师与铁杆粉丝都在不遗余力地捍卫着本方的尊严,并试图说服对方加入到自己的阵营当中,但结果却是双方 ...

  2. django mysql setting 设置

    django mysql setting  django mysql 设置 DATABASES = {    'default': {        'ENGINE': 'django.db.back ...

  3. NISP:一级取证

    NISP:一级取证 BrupSuite工具的使用 设置浏览器代理 flag{C0ngratulati0n} flag{LMvBi8w9$m1TrgK4} flag{T4mmL9GhpaKWunPE} ...

  4. 常用js方法函数

    常用方法函数 1.深复制 // 1.深复制 function deepCopy(source) { var result = {}; for (var key in source) { result[ ...

  5. Dubbo之消费者

    在写 dubbbo调用时候 <dubbo:reference  不能有空格! 项目结构: pom: <project xmlns="http://maven.apache.org ...

  6. python的easygui

    1.利用msgbox(单词messagebox的缩写)给出一个提示信息: import easygui as g reply=g.msgbox('This is a basic message box ...

  7. PHP的深copy和浅copy

    1.对象复制的由来 为什么对象会有“复制”这个概念,这与PHP5中对象的传值方式是密切相关的,让我们看看下面这段简单的代码 /** * 电视机类 */ class Television { /** * ...

  8. 【Codeforces】Round #460 E - Congruence Equation 中国剩余定理+数论

    题意 求满足$na^n\equiv b \pmod p$的$n$的个数 因为$n \mod p ​$循环节为$p​$,$a^n\mod p​$循环节为$p-1​$,所以$na^n \mod p​$循环 ...

  9. leetcode 43. Multiply Strings(高精度乘法)

    Given two numbers represented as strings, return multiplication of the numbers as a string. Note: Th ...

  10. linux网络编程 gethostbyname()

    gethostbyname()返回对应于给定主机名的包含主机名字和地址信息的hostent结构指针.结构的声明与gethostaddr()中一致. 返回对应于给定主机名的主机信息. #include ...