无线OSS-高精度整数加法(加数可以为负数,应实现高精度加减法)
2017-06-13 18:47
239 查看
#include<bits/stdc++.h> using namespace std; bool cmp(string a,string b) { if(a.size()>b.size())return true; if(a.size()<b.size())return false; if(a<=b)return false; return true; } string add(string a,string b) { int x,y,c=0; string ab; for(int i=a.size()-1,j=b.size()-1; i>=0||j>=0; i--,j--) { x=i>=0?a[i]-'0':0; y=j>=0?b[j]-'0':0; ab+=(x+y+c)%10+'0'; c=(x+y+c)/10; } if(c==1)ab+='1'; reverse(ab.begin(),ab.end()); return ab; } string sub(string a,string b) { int x,y,c=0; string ab; for(int i=a.size()-1,j=b.size()-1; i>=0||j>=0; i--,j--) { x=i>=0?a[i]-'0':0; y=j>=0?b[j]-'0':0; if(x<y) { ab+=x+10-y+'0'; for(int k=i-1; k>=0; k--) { if(a[k]>'0') { a[k]=a[k]-1; break; } else { a[k]='9'; } } } else { ab+=x-y+'0'; } } reverse(ab.begin(),ab.end()); int i; for(i=0; i<ab.size(); i++) if(ab[i]!='0')break; if(i==ab.size())return "0"; return ab.substr(i,ab.size()-i); } int main() { string a,b; while(cin>>a>>b) { if(a[0]!='-'&&b[0]!='-') { cout<<add(a,b)<<endl; } else if(a[0]=='-'&&b[0]=='-') { cout<<"-"<<add(a.substr(1,a.size()-1),b.substr(1,b.size()-1))<<endl; } else { string a1,b1; if(a[0]=='-') { a1=a.substr(1,a.size()-1); b1=b.substr(0,b.size()); } else { a1=b.substr(1,b.size()-1); b1=a.substr(0,a.size()); } if(cmp(a1,b1)) { cout<<"-"<<sub(a1,b1)<<endl; } else { cout<<sub(b1,a1)<<endl; } } } return 0; }
相关文章推荐
- [编程题]无线OSS-高精度整数加法
- 华为OJ——无线OSS-高精度整数加法
- 华为OJ——无线OSS-高精度整数加法
- 【华为机试】无线OSS-高精度整数加法
- 使用main函数的参数,实现一个整数计算器,程序可以接受三个参数,第一个参数“-a”选项执行加法,“-s”选项执行减法,“-m”选项执行乘法,“-d”选项执行除法,后面两个参数为操作数。
- 实现一个整数计算器,程序可以接受三个参数,第一个参数“-a”选项执行加法,“-s”选项执行减法,“-m”选项执行乘法,“-d”选项执行除法,后面两个参数为操作数。 例如:输入t
- 华为机试在线训练-牛客网(27)无线OSS-高精度整数加法
- 使用main函数的参数,实现一个整数计算器,程序可以接受三个参数,第一个参数“-a”选项执行加法,“-s”选项执行减法,“-m”选项执行乘法,“-d”选项执行除法,后面两个参数为操作数。
- 使用main函数的参数,实现一个整数计算器,程序可以接受三个参数,第一个参数“-a”选项执行加法,“-s”选项执行减法,“-m”选项执行乘法,“-d”选项执行除法,后面两个参数为操作数。
- 2.5 输入一个单精度浮点数,将其向零舍入到整数。说明:向零舍入的含义是,正数向下舍入,负数向上舍入。提示:可以使用强制类型转换来实现
- 定义一个函数,在该函数中可以实现任意两个整数的加法。java实现
- 使用main函数的参数,实现一个整数计算器,程序可以接受三个参数,第一个参数“-a”选项执行加法,“-s”选项执行减法,“-m”选项执行乘法,“-d”选项执行除法,后面两个参数为操作数。
- 使用main函数的参数,实现一个整数计算器,程序可以接受三个参数,第一个参数“-a”选项执行加法,“-s”选项执行减法,“-m”选项执行乘法,“-d”选项执行除法,后面两个参数为操作数。
- 使用main函数的参数,实现一个整数计算器,程序可以接受三个参数,第一个参数“-a”选项执行加法,“-s”选项执行减法,“-m”选项执行乘法,“-d”选项执行除法,后面两个参数为操作数。
- 使用main函数的参数,实现一个整数计算器,程序可以接受三个参数,第一个参数“-a”选项执行加法,“-s”选项执行减法,“-m”选项执行乘法,“-d”选项执行除法,后面两个参数为操作数。
- 华为机试:无线OSS-高精度整数加法、矩阵乘法计算量估算
- 【华为OJ】【039-无线OSS-高精度整数加法】
- 高精度整数(包括负数)加法
- 编程实现任意长度整数的加法(整数可以长度超出C++中int范围)
- 高精度大整数加法