Problem B: 大整数的加法运算
Problem B: 大整数的加法运算
Time Limit: 1 Sec Memory Limit: 128 MB
Submit: 112 Solved: 57
[Submit][Status][Web Board]
Description
我们知道,C++中的整数类型,如short、int、long和long long等都有确定的表示范围,超大的整数是不能表示的。请定义一个类Decimal,用于表示大整数,并实现如下方法:
1.根据给出的main函数定义的构造函数。
2. 重载加法(“+”)运算符,可以实现一个Decimal对象与另一个Decimal对象求和、与一个int类型的数值求和。
3. 重载前缀自增运算符。
4. 重载下标运算符,用于求当前对象的指定下标位置的数字。
5. 重载输入、输出运算符。
Input
输入3个数,前2个可能会超出unsigned long long的表示范围,最后1个是一个int类型的非负整数。
不考虑负数。
Output
见样例。
Sample Input
123456789987654321111
15
Sample Output
b = 123456789987654321111
i = 15
a = 876543210012345678890
c = 1000000000000000000000
d = 876543210012345678890
e = 123456789987654321126
f = 554433
g = 12345
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <vector>
#include <sstream>
#include <string>
using namespace std;
int a[1001],b[1001];
char c[1001];
class Decimal
{
public:
string s1;
Decimal(string a=""):s1(a){}
Decimal(unsigned long long int n)
{
stringstream ss;
string str;
ss<<n;
ss>>str;
s1=str;
}
friend istream &operator >>(istream & it,Decimal &T)
{
it>>T.s1;
return it;
}
friend ostream &operator << (ostream & os,const Decimal &T)
{
os<<T.s1;
return os;
}
friend Decimal operator + ( Decimal T1,Decimal T2)
{
string a = T1.s1;
string b = T2.s1;
int i1 = a.size() - 1;
int i2 = b.size() - 1;
string s;
int carry = 0;
while (i1 >= 0 || i2 >= 0)
{
char ch = carry;
if (i1 >= 0)
{
if (a[i1] < '0' || a[i1] > '9')
continue;
ch += a[i1] - '0';
}
if (i2 >= 0)
{
if (b[i2] < '0' || b[i2] > '9')
continue;
ch += b[i2] - '0';
}
if (ch >= 10)
{
carry = 1;
ch -= 10;
}
else carry = 0;
s.push_back(ch + '0');
i1--;
i2--;
}
if (carry) s.push_back('1');
reverse(s.begin(), s.end());
return Decimal(s);
}
Decimal &operator ++()
{ string &t=s1;
int l=t.size();
l--;
for(int i=l;i>=0;i--)
{
if(t[i]=='9')
t[i]='0';
else
{
t[i]+=1;
break;
}
}
return *this;
}
char operator [](int i)
{
return s1[i];
}
int getLength()
{
return s1.size();
}
};
int main()
{
Decimal a, b, c, d, e, f("554433"), g(12345);
int i;
cin>>a>>b>>i;
cout<<"a = "<<a<<endl;
cout<<"b = "<<b<<endl;
cout<<"i = "<<i<<endl;
c = a + b;
d = ++a;
e = b + i;
cout<<"a = "<<a<<endl;
cout<<"c = "<<c<<endl;
cout<<"d = "<<d<<endl;
cout<<"e = "<<e<<endl;
cout<<"f = "<<f<<endl;
cout<<"g = "<<g<<endl;
cout<<c[0];
for (i = 1; i < c.getLength(); i++)
{
cout<<" "<<c[i];
}
cout<<endl;
return 0;
}
本菜瑟瑟发抖
Problem B: 大整数的加法运算的更多相关文章
- Problem B: 大整数的加法运算 升级版
#include <iostream> #include <algorithm> #include <cstdio> #include <cstring> ...
- 大整数加减运算的C语言实现
目录 大整数加减运算的C语言实现 一. 问题提出 二. 代码实现 三. 效果验证 大整数加减运算的C语言实现 标签: 大整数加减 C 一. 问题提出 培训老师给出一个题目:用C语言实现一个大整数计算器 ...
- 用Java的大整数类BigInteger来实现大整数的一些运算
关于BigInteger的构造函数,一般会用到两个: BigInteger(String val); //将指定字符串转换为十进制表示形式: BigInteger(String val,int rad ...
- RNN入门(4)利用LSTM实现整数加法运算
本文将介绍LSTM模型在实现整数加法方面的应用. 我们以0-255之间的整数加法为例,生成的结果在0到510之间.为了能利用深度学习模型模拟整数的加法运算,我们需要将输入的两个加数和输出的结果 ...
- 1024 Palindromic Number int_string转换 大整数相加
A number that will be the same when it is written forwards or backwards is known as a Palindromic Nu ...
- 基于Java的大整数运算的实现(加法,减法,乘法)学习笔记
大整数,顾名思义就是特别大的整数. 一台64位的机器最大能表示的数字是2的64次方减一: 18446744073709551615 java语言中所能表示的整数(int)最小为-2147483648 ...
- HDU1002——大整数加法
题目: I have a very simple problem for you. Given two integers A and B, your job is to calculate the S ...
- A——大整数加法(HDU1002)
题目: I have a very simple problem for you. Given two integers A and B, your job is to calculate the S ...
- C语言课程设计大整数运算
该大整数运算系统用于对有符号的位数不超过500位的大整数进行加.减.乘.除四则运算和计算N(0<=N<=10000)的阶乘.注意事项 : 1.操作期间,进行四则运算时若大整数为正数请 ...
随机推荐
- 网页meta标签总结
文章摘抄自网络. 参考文章:http://www.cnblogs.com/lpt1229/p/5628631.html http://blog.csdn.net/aiolos1111/article/ ...
- webservice部署到服务器报错
System.Net.WebException: 基础连接已经关闭: 发送时发生错误. ---> System.IO.IOException: 从传输流收到意外的 EOF 或 0 个字节. 在 ...
- h5 meta学习
定义针对搜索引擎的关键词:<meta name="keywords" content="meta,red" /> 定义对页面的描述:<meta ...
- 程序员网站开发时应该注意的SEO问题
一.链接的统一性 搜索引擎排名最主要的因素就是网站内容和链接,假如网站内部链接不一致,在很大程度上直接影响着网站在搜索引擎中的排名.例如彩票专营店导航栏中的“首页”链接,程序员在开发时可能会有以下几种 ...
- thrift例子:python客户端/java服务端
java服务端的代码请看上文. 1.说明: 这两篇文章其实解决的问题是,当使用python去访问大数据线上集群的时候,遇到两个问题: 1)python-hadoop和python-hive相关包链接不 ...
- [Python]Codecombat攻略之远边的森林Forest(1-40关)
首页:https://cn.codecombat.com/play语言:Python 第二界面:远边的森林Forest(40关)时间:2-6小时内容:if/else.关系操作符.对象属性.处理输入网页 ...
- 【学习】苹果iPhone safari浏览器样式重置修复按钮圆角bug
iPhone safari浏览器中,input按钮会按苹果的默认UI来渲染,例如,写的按钮明明是这个样的: 但是实际就会是这个样子: 怎么办呢? 为按钮添加:-webkit-appearance: n ...
- asp.net mvc webapi 实用的接口加密方法
在很多项目中,因为webapi是对外开放的,这个时候,我们就要得考虑接口交换数据的安全性. 安全机制也比较多,如andriod与webapi 交换数据的时候,可以走双向证书方法,但是开发成本比较大, ...
- btsync 分享资源
Btsync是一款跨平台软件,可以在不同的设备之间共享文件. Btsync类似于BT下载,用户对用户(多用户)之间的传送. 文档的分享者可以将资源放到文件夹下,生成共享Key,分享给接受者,接受者只需 ...
- openwrt下 samba设置
1. 增加用户: 可以手工直接修改 /etc/passwd, 增加一行: samba:x:102:100::/home/samba:#也可命令如下opkg updateopkg install sha ...