1002—A + B Problem II(高精度)

来源:互联网 发布:孙大炮 萝莉控 知乎 编辑:程序博客网 时间:2024/06/06 02:42

   第一次正式开始编程之路,就拿这道题来说,对于许多神牛来讲,简直就是小case,然而,我却被这道题目宰了好长时间,提交了好多次都不成功,貌似有15次了,当时真想放弃了,大哭哎,小女出入编程之路,怎么可以这么容易被打败呢。于是乎,继续呗。。。敲打

    这道题目,我初看时,以为很简单,但是提交几次都失败后,才发现没想象的简单,需要用到高精度。还有神马前导不能为0,要用到数组来存储整数,数组中的每个元素都对应着大整数的每一位,按顺序排列。后来,了解了大整数相加的算法思想,在重新排了一次,变成格式错误,我改了好多,依旧presentation error。。。抓狂纠结中……幸亏大神提醒,话说,题目要求每两个case之间留有一个空白行,但结尾不需要,结尾只要一个换行就可以了。。。于是乎。。。大笑在此,把代码展示下,留个纪念+教训+也是我正式踏上编程之路的开始

题目来源:http://acm.hdu.edu.cn/showproblem.php?pid=1002

我的代码:

#include <iostream>using namespace std;#include <string.h>#include<string>#define MAX_LEN 1001int an1[MAX_LEN+10];int an2[MAX_LEN+10];char szLine1[MAX_LEN+10];char szLine2[MAX_LEN+10];int main(){int t;string szLine1,szLine2;cin>>t;for(int k=1;k<=t;k++) { cin>>szLine1>>szLine2;memset( an1, 0, sizeof(an1));memset( an2, 0, sizeof(an2));int i, j;int nLen1 =  szLine1.size();for( j = 0, i = nLen1 - 1;i >= 0 ; i --)an1[j++] = szLine1[i] - '0';int nLen2 = szLine2.size();for( j = 0, i = nLen2 - 1;i >= 0 ; i --)an2[j++] = szLine2[i] - '0';for( i = 0;i < MAX_LEN ; i ++ ){ an1[i] += an2[i]; if( an1[i] >= 10 ){ an1[i] -= 10;an1[i+1] ++; }}for( i = MAX_LEN; (i >= 0) && (an1[i] == 0); i -- ) ;if(i>=0){cout<< "Case "<<k<<":"<<endl;cout<<szLine1<<" + "<<szLine2<<" = "; for( ; i >= 0; i--) cout<<an1[i]; if(k!=t) {cout<<"\n"<<endl;} else cout<<endl;}else{cout<< "Case "<<k<<":"<<endl;cout<<szLine1<<" + "<<szLine2<<" = "; cout<<"0"; if(k!=t) {cout<<"\n"<<endl;} else cout<<endl;}}return 0;}


 

原创粉丝点击