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.操作期间,进行四则运算时若大整数为正数请 ...
随机推荐
- Java钉钉开发_01_开发前的准备
源码已上传GitHub:传送门 一.准备事项 1.1 一个能在公网上访问的项目: 参见:Java微信开发_02_本地服务器映射外网 1.2 一个钉钉账号 去注册 1.3 创建一个应用 登录钉钉后台 ...
- TEXT宏
TEXT宏是windows程序设计中经常遇到的宏,定义在 <winnt.h>中 TCHAR *P = TEXT("this is a const string"); 如 ...
- JAVA 反射(1)
getDeclaredField是可以获取一个类的所有字段. getField只能获取类的public 字段.
- Ubuntu16.04下安装redis
Ubuntu16.04下安装redis 保证网络畅通,选定好下载工作路径,执行以下命令下载redis-3.2.6: sudo wget http://download.redis.io/release ...
- 关于python中的pickle函数
8-7参考阅读 - 读文件.写文件.异常处理.文件保存游戏.pickle数据转成文本的过程又被称为"序列化",即将对象状态转换为可保持或传输的格式的过程.对应的,从序列化的格式中解 ...
- install xdebug
安装准备 安排php的xdebug扩展,在php.ini上配置xdebug.通过phpinfo或者php-m 查看 [Xdebug] zend_extension ="D:\upupw7\P ...
- CLR via 随书笔记
CTS(common type system) 通用类型系统规定,一个类型可以包含零个或者多个成员,如下: 字段(Field): 作为对象状态一部分的数据变量.字段根据名称和类型来区分 方法( ...
- Ubuntu12.04 Firefox安装flash
1. 实验环境 Ubuntu 14.04x86 2.安装步骤 2.1 浏览器访问:https://get.adobe.com/flashplayer/?loc=cn 2.2 网址会自动识别ubuntu ...
- Mysql 学习之EXPLAIN作用
一.MYSQL的索引 索引(Index):帮助Mysql高效获取数据的一种数据结构.用于提高查找效率,可以比作字典.可以简单理解为排好序的快速查找的数据结构.索引的作用:便于查询和排序(所以添加索引会 ...
- [译]ASP.NET Core 2.0 依赖注入
问题 如何使用 ASP.NET Core 服务容器进行依赖注入? 答案 创建一个服务 public interface IGreetingService { string Greet(string t ...