大整数相加

男娘i 2022-06-06 06:40 292阅读 0赞

Description

给你两个整数n,m,求从n到m之间所有数字之和,保证0<=n<=m

Input

只有一行包含两个整数n,m

Output

输出n到m之间所有数字之和

Sample Input

1 2

0 100000

Sample Output

3

5000050000

思路:对于大整数类的运算,只能当其为字符串处理,模拟运算过程。

Code:

  1. #include <iostream>
  2. #include <cstdio>
  3. using namespace std;
  4. string add(string a,string b){
  5. long long int t,p=0,i=0,j=0;
  6. string c="";
  7. for(;i<a.length()||j<b.length();){
  8. if(i<a.length()&&j<b.length())
  9. t=(a[i++]-'0')+(b[j++]-'0')+p;//int
  10. else if(i<a.length())
  11. t=a[i++]-'0'+p;
  12. else
  13. t=b[j++]-'0'+p;
  14. p=0;
  15. if(t>9){
  16. t-=10;p=1;
  17. }
  18. c+=t+'0';//int to char
  19. }
  20. if(p) c+=1+'0';//
  21. return c;
  22. }
  23. string intTOstr(long long int i){
  24. string t="";
  25. while(i){
  26. t+=i%10+'0';
  27. i/=10;
  28. }
  29. return t;
  30. }
  31. int main(){
  32. long long int n,m;
  33. while(scanf("%lld%lld",&n,&m)!=EOF){
  34. string t=intTOstr(n),p;
  35. for(long long int i=n+1;i<=m;i++){
  36. p=intTOstr(i);
  37. t=add(t,p);
  38. }
  39. for(int i=t.length()-1;i>=0;i--) cout<<t[i];
  40. cout<<endl;
  41. }
  42. return 0;
  43. }

发表评论

表情:
评论列表 (有 0 条评论,292人围观)

还没有评论,来说两句吧...

相关阅读

    相关 NC1-整数相加

    描述 以字符串的形式读入两个数字,编写一个函数计算它们的和,以字符串形式返回。 (字符串长度不大于100000,保证字符串仅由'0'~'9'这10种字符组成) 示例

    相关 整数相加

    > Description > > 给你两个整数n,m,求从n到m之间所有数字之和,保证0<=n<=m > > Input > > 只有一行包含两个整数n,m