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 ...
随机推荐
- C#参数化SQL查询
//写一个存储过程 ALTER PROCEDURE dbo.Infosearch ( @bmid smallint = null, @xm varchar()=null, @xb varchar()= ...
- JSON结构
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript Programming Langu ...
- 简单的jQuery获取URL的?后带的参数
var con_name = getQueryString("con_name"); //接收con_name function getQueryString(val ...
- VS2012中进行Web性能和负载测试
问题1:无法使用ie进行录制 解决方法: 工具 >> 管理加载项 >> 在工具栏和扩展中找到发布者为Microsoft Corporation的Microsoft Web Te ...
- mybatis的一对多映射
延续mybatis的一对一问题,如果一个用户有多个作品怎么办?这就涉及到了一对多的问题.同样的,mybatis一对多依然可以分为两种方式来解决. 一.使用内嵌的ResultMap实现一对多映射 1)实 ...
- XAML 概述四
这一节我们来简单介绍一下XAML的加载和编译,它包括如下三种方式: · 只使用代码 · 使用代码和未编译的XAML · 使用代码和编译过的BAML 一. 只使用代码 我们首先创建一个简单的控制台 ...
- Posix 信号量
作用 信号量的值为0或正整数,就像红灯与绿灯,用于指示当前是否可以接受任务. 信号量对进程和线程都适用. gcc编译时需加-lpthread 基本函数 信号量的相关函数与标准文件函数非常相似,可以理解 ...
- Java中resourceBundle和Properties的区别
第一种办法InputStream is = Test.class.getResourceAsStream("DbConfig.properties");Properties p = ...
- Oracle 10g下载链接
用迅雷下载: http://download.oracle.com/otn/linux/oracle10g/10201/10201_database_linux_x86_64.cpio.gz http ...
- C# list 筛选FindAll,根据参数过滤
/// <summary> /// 汽车车型 获取 /// Redis Key=zgqp315_Redis_ModelNumberC_List /// </summary> / ...