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 ...
随机推荐
- CentOS6.5升级手动安装gcc4.8.2
一.简易安装 操作环境 CentOS6.5 64bit,原版本4.4.7,不能支持C++11的特性~,希望升级到4.8.2 不能通过yum的方法升级,需要自己手动下载安装包并编译 1.1 获取安装包并 ...
- MySQL 单表百万数据记录分页性能优化
文章转载自:http://www.cnblogs.com/lyroge/p/3837886.html 背景: 自己的一个网站,由于单表的数据记录高达了一百万条,造成数据访问很慢,Google分析的后台 ...
- Silverlight自动根据屏幕分辨率进行布局
xaml: <UserControl x:Class="SLCenterLayout.MainPage" xmlns="http://schemas.microso ...
- PHP中数组排序实例学习
先介绍下php中用于数组排序的函数: 排序方法 升序 降序 ...
- 防火墙设置:虚拟机ping不通主机,但是主机可以ping通虚拟机(转载)
我在Windows7系统安装了虚拟机,通过虚拟机安装了Ubuntu13.04,我设置的主机与虚拟机的连接方式是桥接,安装好后,发现虚拟机ping不通主机,但是主机可以ping通虚拟机. 我的操作是:关 ...
- 系统中使用frameset和Iframe刷新页面session失效
问题:Asp.net中每次刷新页面,session中保存的只就丢失 原因: 1.有些杀毒软件会去扫描web.config文件 2.程序内部有让session丢失的代码,或服务器内存不足 3.程序有框架 ...
- Python脚本控制的WebDriver 常用操作 <二十七> 文件下载
测试用例场景 webdriver允许我们设置默认的文件下载路径.也就是说文件会自动下载并且存在设置的那个目录中. Python脚本 测试用Python代码: # coding=gbk ''' Crea ...
- wpf MVVM ViewModel 关闭View显示
上次说到了不同wpf窗体之间的交互,这个在MVVM模式之中用起来会方便很多 下面我来说下在ViewModel中关闭View的方法,其实也很简单的,注释照样不写,一看就懂的 public partial ...
- Android开发——AsyncTask详解
android提供AsynvTask,目的是为了不阻塞主线程(UI线程),且UI的更新只能在主线程中完成,因此异步处理是不可避免的. Android为了降低开发难度,提供了AsyncTask.Asyn ...
- 在Linux下写一个简单的驱动程序
本文首先描述了一个可以实际测试运行的驱动实例,然后由此去讨论Linux下驱动模板的要素,以及Linux上应用程序到驱动的执行过程.相信这样由浅入深.由具体实例到抽象理论的描述更容易初学者入手Linux ...