大整数减法
来源:互联网 发布:手机数据恢复价格 编辑:程序博客网 时间:2024/04/29 16:38
自己花了几个小时写的
最后边界虽然是对的但是感觉还是很麻烦,等在想想 或找到别人更好的再说吧
#include <iostream>
#include <cstring>
using namespace std;
//字符串反转
void Reverse(char *str)
{
char* left = str;
char temp;
str = str+strlen(str)-1;
while(left < str)
{
temp = *left;
*left++ = *str;
*str-- = temp;
}
}
void Bigsub(char* a,char* b,char* res)
{
int lena = strlen(a),
lenb = strlen(b);
int max = lena >= lenb ? lena : lenb;
int min = lenb;
char *str = new char[max+1];
// 串组a内总是存着二者较长的串组
if(lena < lenb)
{
min = lena;
strcpy(str,a);
strcpy(a,b);
strcpy(b,str);
}
//cout<<a<<endl;
//cout<<b<<endl;
//开始计算
int x = 0,i,sub;
for(i = 0; i < max; i++)
{
if(i < min)
sub = (a[i] - '0') - (b[i] - '0') - x;
else
sub = (a[i] - '0') - x;
//处理a[i] - b[i] < 0的情况,要在前一位接1,
if(sub < 0)
{
res[i] = 10 + sub + '0';
x = 1;
//a[i+1] = a[i+1] - '0' - 1;
}
else
{
res[i] = sub + '0';
x = 0;
}
}
if(res[i-1] == '0')
res[i-1] = 0;
else
res[i] = 0;
}
int main()
{
char a[200],b[200],res[202];
cin>>a>>b;
Reverse(a);
Reverse(b);
Bigsub(a,b,res);
Reverse(res);
cout<<res<<endl;
return 0;
}
- 大整数减法
- 大整数减法
- 大整数减法
- 大整数减法
- 大整数加法减法
- 大整数减法
- 大整数减法模板
- 大整数减法
- 大整数减法
- 大整数的减法
- 大整数-减法
- 大整数减法
- 11:大整数减法
- 大整数减法
- 11:大整数减法
- 大整数减法
- 11.大整数减法
- 高精度(大整数减法)
- 多机调度问题
- Ycnd GUI 早期的形态(额外)
- 动态磁盘转换成基本磁盘
- 经典vim插件功能说明、安装方法和使用方法介绍
- modbus crc校验
- 大整数减法
- linux字符cdev和Inode的关系
- 1天学习1个类 UIDatePicker 类 示例
- 光盘
- uva10010 - Where's Waldorf?
- 第十六周 任务四
- 算法:反序输出字符串
- [Oracle Optimize] Oracle 10g Hint
- Texture Mapping