NOJ_1011 大数加法
发布时间:2020-12-14 02:28:09 所属栏目:大数据 来源:网络整理
导读:大数加法 时间限制(普通/Java) ?:? 1000 MS/?3000 MS?? ? ? ???运行内存限制 : 65536 KByte 总提交 : 2971 ? ? ? ?? ? 测试通过 : 775? 比赛描述 求两个非负整数( 1000 位以内)的和。 输入 两个非负整数(1000位以内),以空格分隔。 输出 两个非负整数的
大数加法
时间限制(普通/Java)?:?
1000 MS/?3000 MS?? ? ? ???运行内存限制 : 65536 KByte
总提交 : 2971 ? ? ? ?? ? 测试通过 : 775? 比赛描述 求两个非负整数(1000位以内)的和。 输入 两个非负整数(1000位以内),以空格分隔。 输出
两个非负整数的和。 样例输入 222222222211?222222222222 样例输出 333333333333 提示 ? 题目来源 GUOJ 基础的string操作 string的这个构造函数 string s(n,'c') ?把s初始化为由连续n个字符c组成的串 还挺好用的,赞~(≧▽≦)/~ #include<iostream> #include<string> using namespace std; int main() { string string1,string2; int string3_len,string2_len,string1_len; cin >> string1 >> string2; string1_len = string1.length(); string2_len = string2.length(); if(string1.length()>=string2.length()) string3_len = string1.length(); else string3_len = string2.length(); string string3(string3_len,'0'); //初始化 string3 把string3初始化为由连续string3_len个字符0组成的串 int string3_index = string3_len-1; int string2_index = string2_len-1; int string1_index = string1_len-1; int jinwei=0; while(string1_index >=0 && string2_index>=0) { string3[string3_index] = string1[string1_index--] + string2[string2_index--] - 48 + jinwei; jinwei=0; if(string3[string3_index]>'9') { string3[string3_index]-=10; jinwei = 1; } string3_index--; } while(string1_index>=0) //收尾操作1 { string3[string3_index] = string1[string1_index--] +jinwei ; jinwei = 0; if(string3[string3_index]>'9') { string3[string3_index]-=10; jinwei = 1; } string3_index--; } while(string2_index>=0) //收尾操作2 { string3[string3_index] = string2[string2_index--] +jinwei ; jinwei = 0; if(string3[string3_index]>'9') { string3[string3_index]-=10; jinwei = 1; } string3_index--; } if(jinwei == 1) cout << jinwei; cout << string3 ; } 然后又写了一个同样思路的C语言版本 #include<stdio.h> #include<string.h> int main() { char s1[1000],s2[1000],s3[1000]; int s1_len,s2_len,s3_len,i; int string3_index = s3_len-1; int string2_index = s2_len-1; int string1_index = s1_len-1; int jinwei=0; scanf("%s %s",s1,s2); // printf("%s %s",s2); s1_len = strlen(s1); s2_len = strlen(s2); s3_len = (s1_len>=s2_len)?s1_len:s2_len; for(i=0;i<s3_len;i++) s3[i]='0'; s3[i]=' '; // printf("%s %sn%s",s2,s3); string3_index = s3_len-1; string2_index = s2_len-1; string1_index = s1_len-1; jinwei=0; while(string1_index >=0 && string2_index>=0) { s3[string3_index] = s1[string1_index--] + s2[string2_index--] - 48 + jinwei; jinwei=0; if(s3[string3_index]>'9') { s3[string3_index]-=10; jinwei = 1; } string3_index--; } while(string1_index>=0) //收尾操作1 { s3[string3_index] = s1[string1_index--] +jinwei ; jinwei = 0; if(s3[string3_index]>'9') { s3[string3_index]-=10; jinwei = 1; } string3_index--; } while(string2_index>=0) //收尾操作2 { s3[string3_index] = s2[string2_index--] +jinwei ; jinwei = 0; if(s3[string3_index]>'9') { s3[string3_index]-=10; jinwei = 1; } string3_index--; } if(jinwei == 1) printf("%d",jinwei); puts(s3 ) ; return 0; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |