ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

讲一下高精加与P1601

讲一下高精加与P1601 P1601 高精度加法P1601 高精度加法 - 洛谷题目介绍很经典的高精加给定两个非负整数 a,b求它们的和。不用考虑负数。输入格式输入共两行每行一个非负整数分别为 a,b。输出格式输出一行一个非负整数表示 ab 的值。输入输出样例输入 #11 1输出 #12输入 #21001 9099输出 #210100说明/提示对于 100% 的测试数据0≤a,b≤。思路大家学过列竖式吗我学过想必你一定也学过。所以·128391519这样是不是更明显了没错根据数列可以得出加法就是从两个数的最低位开始逐渐向上一一对应去相加。但是long long只能支持n≤所以便有两种方法一种是用数组存数另一种是用字符串存数这边推荐用字符串来存。int t0; string c;//结果 int ia.size()-1; int jb.size()-1; while(i0||j0){ if(i0) tt(a[i]-0);//相加 if(j0) tt(b[j]-0);//相加 c(t%100);//结果 t/10;//进位 i--;//下标改变 j--;//下标改变 }但是注意最高位可能进位所以if(t) c(t0);但是要注意字符串的进出顺序类似于队列但我们是由低到高相加由高到低输出所以reverse(c.begin(),c.end());//反转字符串整体加法函数string pi(string a,string b){ int t0; string c;//结果 int ia.size()-1; int jb.size()-1; while(i0||j0){ if(i0) tt(a[i]-0);//相加 if(j0) tt(b[j]-0);//相加 c(t%100);//结果 t/10;//进位 i--;//下标改变 j--;//下标改变 } if(t) c(t0); reverse(c.begin(),c.end());//反转字符串 return c; }P1601AC代码#include bits/stdc.h using namespace std; string pi(string a,string b){ int t0; string c;//结果 int ia.size()-1; int jb.size()-1; while(i0||j0){ if(i0) tt(a[i]-0);//相加 if(j0) tt(b[j]-0);//相加 c(t%100);//结果 t/10;//进位 i--;//下标改变 j--;//下标改变 } if(t) c(t0); reverse(c.begin(),c.end());//反转字符串 return c; } int main() { string a,b; cinab; coutpi(a,b); return 0; }
返回列表