QAQ高精度模板笔记√
#include <cmath>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm> using namespace std; const int Bit = ;
const int Max_N = ; struct BigNumber {
long long num[Max_N];
int len; BigNumber () {
len = ;
memset(num, , sizeof num);
} BigNumber (long long A) {
len = ;
while (A) {
num[++ len] = A % Bit;
A /= Bit;
}
} void Clear() {
len = ;
memset(num, , sizeof num);
} BigNumber operator = (const BigNumber &A) const {
BigNumber ret;
ret.len = A.len;
for (int i = ; i <= A.len; ++ i) {
ret.num[i] = A.num[i];
}
return ret;
} BigNumber operator + (const BigNumber &A) const {
BigNumber ret;
ret.len = max(A.len, len) + ;
for (int i = ; i <= len; ++ i) {
ret.num[i + ] += (A.num[i] + num[i]) / Bit;
ret.num[i] += (A.num[i] + num[i]) % Bit;
}
while (!ret.num[ret.len] && ret.len) -- ret.len;
return ret;
} BigNumber operator - (const BigNumber &A) const {
BigNumber ret = *this;
ret.len = max(len, A.len) + ;
for (int i = ; i <= A.len; ++ i) {
ret.num[i] -= A.num[i];
if (ret.num[i] < ) {
ret.num[i] += Bit;
ret.num[i + ] --;
}
}
while (!ret.num[ret.len] && ret.len) -- ret.len;
return ret;
} BigNumber operator * (const BigNumber &A) const {
BigNumber ret;
ret.len = len + A.len + ;
for (int i = ; i <= len; ++ i) {
for (int j = ; j <= A.len; ++ j) {
long long v = 1LL * num[i] * A.num[j] + ret.num[i + j - ];
ret.num[i + j] += v / Bit;
ret.num[i + j - ] += v % Bit;
}
}
while (!ret.num[ret.len] && ret.len) -- ret.len;
return ret;
} BigNumber operator / (const int &A) const {
BigNumber ret;
ret.len = len + ;
for (int i = ret.len; i > ; -- i) {
ret.num[i - ] = (ret.num[i] + num[i]) % A * Bit;
ret.num[i] = (ret.num[i] + num[i]) / A;
}
ret.num[] = ;
while (!ret.num[ret.len] && ret.len) -- ret.len;
return ret;
} void Read() {
Clear();
static char S[];
scanf("%s", S + );
int N = strlen(S + );
long long Pow = ;
for (int i = N; i; -- i) {
if (Pow == ) ++ len;
num[len] += (S[i] - '') * Pow;
Pow *= ;
if (Pow == Bit) Pow = ;
}
} void Write() {
printf("%lld", num[len]);
for (int i = len - ; i > ; -- i) {
printf("%09lld", num[i]);
}
}
} ; namespace WorkSpace {
void Main() {
BigNumber A;
A.Read();
long long B;
scanf("%lld", &B);
BigNumber(B).Write(); puts("");
(A * BigNumber(B)).Write();
return ;
}
} int main() {
WorkSpace :: Main();
return ;
}
by yjl
——QAQ%%%yjl
QAQ高精度模板笔记√的更多相关文章
- QAQ数论模板笔记√
#include <cstdio> using namespace std; long long gcd(long long a, long long b) { // (a, b) ret ...
- [Template]高精度模板
重新写一下高精度模板(不要问我为什么) 自认为代码风格比较漂亮(雾 如果有更好的写法欢迎赐教 封装结构体big B是压位用的进制,W是每位长度 size表示长度,d[]就是保存的数字,倒着保存,从1开 ...
- C++高精度模板
原文地址:http://blog.csdn.net/wall_f/article/details/8373395 原文只附代码,没有解析,本文增加了一些对代码的解释. 请注意:本模板不涉及实数运算与负 ...
- [note]高精度模板
高精度模板 先定义一个struct struct gj{ int l,s[N]; bool fh; void Print(){ if(fh)putchar('-'); for(int i=l;i> ...
- 高精度模板 支持各种运算 c++
绪言 自从有了高精度模板,妈妈再也不用怕我不会打高精度了! 代码 代码长度与日俱增啊~~~ #include<iostream> #include<cstring> #incl ...
- 高精度模板 Luogu P1932 A+B & A-B & A*B & A/B Problem
P1932 A+B & A-B & A*B & A/B Problem 题目背景 这个题目很新颖吧!!! 题目描述 求A.B的和差积商余! 输入输出格式 输入格式: 两个数两行 ...
- c++模板笔记
使用vc2015进行C++ 模板的学习实验和笔记 用简单示例学习了解STL template大部头理论书 讲解各种规则和各种规则例外的解决办法 集中精力在20%的规则中的阴暗角落而不是80%实践中要注 ...
- Java 大数、高精度模板
介绍: java中用于操作大数的类主要有两个,一个是BigInteger,代表大整数类用于对大整数进行操作,另一个是BigDecimal,代表高精度类,用于对比较大或精度比较高的浮点型数据进行操作.因 ...
- JAVA高精度模板
刚开始还坚持用C++写高精来着,后来发现JAVA写高精方便太多了,所以也来学习一下JAVA高精度的模板. 参考:https://www.cnblogs.com/imzscilovecode/p/883 ...
随机推荐
- 《APUE》第四章笔记(4)
这算是在博客园写的第一篇文章啊,之前都在csdn写(虽然才写了几篇,因为开通也没多少天..),还是稍微期待下吧.我写博客的主要意图是一来能够记录下来自己所学过的东西,二来也想能够跟大家交流,能够得到更 ...
- 【Qt】QSettings读写注册表、配置文件【转】
简述 一般情况下,我们在开发软件过程中,都会缓存一些信息到本地,可以使用轻量级数据库sqlite,也可以操作注册表.读写配置文件. 关于QSettings的使用前面已经介绍过了,比较详细,见“更多参考 ...
- C# 汉字转拼音(转)
(一)将汉字转化成全拼代码: private void button1_Click(object sender, EventArgs e) { this.textBox2.Text = Hz2Py.C ...
- UCML平台中 如何设置列表单元格中的链接失效
解决方案: 找到“a.datagrid-cell-bclink”,麻烦的是这个标记是由js动态加载的,需要等待这个加载完成:等加载完成后,删除a标记“$(“a.datagrid-cell-bclink ...
- KBase使用教程
1. SELECT * FROM EXPERT_BASEINFO WHERE (源照片='*' not 源照片 is null) and 标准一级机构='山东大学' and 当前职称='*教授' 2. ...
- win7 64位下jboss配置
1.下载Jboss7 下载地址:http://www.jboss.org/jbossas/downloads/ 2.解压到一个目录,如D:\Working,最终路径是D:\Working\jboss- ...
- 【HTML5】websocket 初识
什么是WebSocket API? WebSocket API是下一代客户端-服务器的异步通信方法.该通信取代了单个的TCP套接字,使用ws或wss协议,可用于任意的客户端和服务器程序.WebSock ...
- ubuntu 14.04 安装 Quartus II 13.1 过程
神奇的linux! 第一步去官网注册然后下载对应的linux版本,包括软件和设备文件两部分,软件也就是quartus II nios ide,modelsim-altera这些,设备就是具体alter ...
- oracle 常用SQL语法手册
Select 用途: 从指定表中取出指定的列的数据 语法: SELECT column_name(s) FROM table_name 解释: 从数据库中选取资料列,并允许从一或多个资料表中,选取一或 ...
- 1562: [NOI2009]变换序列 - BZOJ
Description Input Output Sample Input 5 1 1 2 2 1 Sample Output 1 2 4 0 3 HINT 30%的数据中N≤50:60%的数据中N≤ ...