文档章节

高精模板 重载运算符 (+,-,*)

Loi_DL
 Loi_DL
发布于 2016/11/03 07:41
字数 318
阅读 14
收藏 0
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
char s[400000];  //存储输入 
struct Big
{
int a[10000];
int x;
};
//重载    + 
Big operator + (Big A,Big B)
{
int x=max(A.x,B.x);
for(int i=1;i<=x;i++)
{
A.a[i]+=B.a[i];
A.a[i+1]+=A.a[i]/10;
A.a[i]%=10;
}
return A;
}
//重载    - 
Big operator - (Big A,Big B)
{
int x=max(A.x,B.x);
for(int i=1;i<=x;i++)
{
A.a[i]-=B.a[i];
if(A.a[i]<0)
{
A.a[i+1]-=1;
A.a[i]+=10;
}
}
return A;
}
bool operator < (Big A,Big B) //重载  <    用于  小数 - 大数 
{
if(A.x!=B.x)
return A.x<B.x;
for(int i=A.x;i>=1;i--)
{
if(A.a[i]!=B.a[i])
return A.a[i]<B.a[i];
}
}
//重载     * 
Big D;
Big operator * (Big A,Big B)
{
Big C=D;
for(int i=1;i<=6000;i++)
C.a[i]=0;
for(int i=1;i<=A.x;i++)
for(int j=1;j<=B.x;j++)
C.a[i+j-1]+=A.a[i]*B.a[j];
for(int i=1;i<=5000;i++)
{
C.a[i+1]+=C.a[i]/10;
C.a[i]%=10;
}
return C;
}
// 输出函数 
Big A,B,C;
void out()
{
int h=0;
for(int i=5000;i>0;i--)
{
int q=C.a[i];
if(q!=0&&h==0)
h=1;
if(h==1)
cout<<q;
if(i==1&&h==0)
cout<<0;
}
cout<<endl;
}
int main()
{

scanf("%s",s);
int x=strlen(s);
for(int i=0;i<x;i++)            //倒着存 
A.a[x-i]=s[i]-'0';
A.x=x;
scanf("%s",s);
x=strlen(s);
for(int i=0;i<x;i++)
B.a[x-i]=s[i]-'0';
B.x=x;
if(A<B) 
{
C=B-A;
cout<<"-";
out();
}
else
{
C=A-B;
out();
}
C=A+B;
out();
C=A*B;
out();
return 0;

© 著作权归作者所有

Loi_DL
粉丝 0
博文 60
码字总数 48692
作品 0
莱芜
私信 提问
10-C++远征之模板篇-学习笔记

C++远征之模板篇 将会学到的内容: 模板函数 & 模板类 -> 标准模板类 友元函数 & 友元类 静态数据成员 & 静态成员函数 运算符重载: 一切皆有可能 友元函数 函数定义分类: 友元全局函数 例子:...

天涯明月笙
2018/07/24
0
0
嵌入式开发之C++基础学习笔记5--静态成员,友元,运算符重载,模板,文件流

一. 静态成员  在一个类中还可以定义静态成员,但静态成员是所有对象公有的。静态成员分为静态数据成员和静态成员函数。  1.静态数据成员  在类中定义静态数据成员的方法就是在该成员的前...

吴锦涛
2012/12/18
580
0
【C++】定义自己的String类

我们自己写的String类具有以下函数 1.构造函数 2.拷贝和赋值 3.析构函数 4.下标访问 重载下标访问运算符 5.String类提供的方法 6.重载流插入和提取运算符 为了方便输入和输出 7.连接两个字符...

qq_26525215
2018/01/27
0
0
语法基础——C++语法基础

前言 最近发现要学习C++来开发NDK,不得不把基础的东西记录下来,否则学的太多会混淆,废话不多说,开始记录我的C++学习之旅吧 HelloWord 导库 命名空间 输出函数 命名空间 1、命名空间属性访...

qq_30379689
2017/08/31
0
0
[备忘]《C++入门经典》各章小节

《C++入门经典》(即英文版“Beginning C++ The Complete Language”的中译版) 各章小节 第1章 基本概念 ·C++中的程序至少包含一个main()函数。 ·函数的可执行部分由包含在一对花括号中的...

leeoo
2011/12/24
122
0

没有更多内容

加载失败,请刷新页面

加载更多

uni app 零基础小白到项目实战

$emit 子组件传给父组件$ref 父组件操作子组件 公用模板 uni-app全局变量的几种实现方法 const websiteUrl = 'http'const now = Date.now || function() { return new Date().getTime......

达达前端小酒馆
28分钟前
7
0
Tomcat是如何实现异步Servlet的

前言 通过我之前的Tomcat系列文章,相信看我博客的同学对Tomcat应该有一个比较清晰的了解了,在前几篇博客我们讨论了Tomcat在SpringBoot框架中是如何启动的,讨论了Tomcat的内部组件是如何设...

木木匠
52分钟前
28
0
mysql中间件分享(Mysql-prxoy,Atlas,DBProxy,Amoeba,cobar,TDDL)

hello 各位小伙伴大家好,我是小栈君,这期我们分享关于mysql中间件的研究,也就是数据层的读写分离和负载均衡,希望能够在实际的应用中能够帮助到各位小伙伴。 下期我们将继续分享go语言的系...

IT干货栈
今天
10
0
OSChina 周一乱弹 —— 人生,还真是到处是意外

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @这次装个文艺青年吧 :#今日歌曲推荐# 分享lil peep的单曲《High School》 《High School》- lil peep 手机党少年们想听歌,请使劲儿戳(这里...

小小编辑
今天
892
13
Spring使用ThreadPoolTaskExecutor自定义线程池及实现异步调用

多线程一直是工作或面试过程中的高频知识点,今天给大家分享一下使用 ThreadPoolTaskExecutor 来自定义线程池和实现异步调用多线程。 一、ThreadPoolTaskExecutor 本文采用 Executors 的工厂...

CREATE_17
今天
12
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部