洛谷【P2005】A/B Problem II
题目传送门:https://www.luogu.org/problemnew/show/P2005
高精除低精:https://www.cnblogs.com/AKMer/p/9724556.html
高精度除法板子。和高精除低精不同的是,除数不能直接去和当前位相除,而是能减一次算一次……
时间复杂度:\(O(len)\)
空间复杂度:\(O(len)\)
代码如下:
#include <cstdio>
#include <cstring>
using namespace std;
const int maxn=25005;
char s[maxn];
struct Bignum {
int num[maxn];
void make() {
num[0]=strlen(s+1);
for(int i=1;i<=num[0];i++)
num[i]=s[num[0]-i+1]-'0';
}
void print() {
for(int i=num[0];i;i--)
printf("%d",num[i]);
}
bool operator>=(const Bignum &a)const {
if(num[0]!=a.num[0])return num[0]>a.num[0];
for(int i=num[0];i;i--)
if(num[i]!=a.num[i])return num[i]>a.num[i];
return 1;
}//比较
Bignum operator-(const Bignum &a)const {
Bignum c;memcpy(c.num,num,sizeof(c.num));
for(int i=1;i<=c.num[0];i++) {
if(c.num[i]<a.num[i])c.num[i+1]--,c.num[i]+=10;
c.num[i]-=a.num[i];
}
while(!c.num[c.num[0]]&&c.num[0]>1)c.num[0]--;
return c;
}//高精度减法
}a,b,c;
void cpy(Bignum &a,int id,Bignum fake) {
for(int i=1;i<=fake.num[0];i++)
a.num[id+i-1]=fake.num[i];
a.num[0]=fake.num[0]+id-1;
}//把fake丢到a里,并且以id位开始,1到id-1都是0
Bignum operator/(Bignum a,Bignum b) {
Bignum c;memset(c.num,0,sizeof(c.num));
c.num[0]=a.num[0]-b.num[0]+1;
for(int i=c.num[0];i;i--) {
Bignum tmp;memset(tmp.num,0,sizeof(tmp.num));
cpy(tmp,i,b);while(a>=tmp)c.num[i]++,a=a-tmp;//能减就减
}while(c.num[0]>1&&!c.num[c.num[0]])c.num[0]--;
return c;
}
int main() {
scanf("%s",s+1);a.make();
scanf("%s",s+1);b.make();
c=a/b;c.print();
return 0;
}
洛谷【P2005】A/B Problem II的更多相关文章
- 洛谷 P2005 A/B Problem II
P2005 A/B Problem II 题目背景 为了让大家紧张的心情放松一下,这一题题是一道非常简单的题目. 题目描述 给出正整数N和M,请你计算N div M(N/M的下取整). 输入输出格式 ...
- 洛谷1001 A+B Problem
洛谷1001 A+B Problem 本题地址:http://www.luogu.org/problem/show?pid=1001 题目描述 输入两个整数a,b,输出它们的和(|a|,|b|< ...
- 洛谷1303 A*B Problem 解题报告
洛谷1303 A*B Problem 本题地址:http://www.luogu.org/problem/show?pid=1303 题目描述 求两数的积. 输入输出格式 输入格式: 两个数 输出格式 ...
- 洛谷1601 A+B Problem(高精) 解题报告
洛谷1601 A+B Problem(高精) 本题地址:http://www.luogu.org/problem/show?pid=1601 题目背景 无 题目描述 高精度加法,x相当于a+b pro ...
- 洛谷P1865 A % B Problem
1.洛谷P1865 A % B Problem 题目背景 题目名称是吸引你点进来的 实际上该题还是很水的 题目描述 区间质数个数 输入输出格式 输入格式: 一行两个整数 询问次数n,范围m 接下来n行 ...
- 洛谷 P2616 [USACO10JAN]购买饲料II Buying Feed, II
洛谷 P2616 [USACO10JAN]购买饲料II Buying Feed, II https://www.luogu.org/problemnew/show/P2616 题目描述 Farmer ...
- 洛谷 P1182 数列分段 Section II
洛谷 P1182 数列分段 Section II 洛谷传送门 题目描述 对于给定的一个长度为N的正整数数列A-iA−i,现要将其分成M(M≤N)M(M≤N)段,并要求每段连续,且每段和的最大值最小. ...
- 洛谷P3412 仓鼠找$Sugar\ II$题解(期望+统计论?)
洛谷P3412 仓鼠找\(Sugar\ II\)题解(期望+统计论?) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1327573 原题链接:洛谷P3412 ...
- 洛谷P1288 取数游戏II(博弈)
洛谷P1288 取数游戏II 先手必胜的条件需要满足如下中至少 \(1\) 条: 从初始位置向左走到第一个 \(0\) 的位置,经过边的数目为偶数(包含 \(0\) 这条边). 从初始位置向右走到第一 ...
- 洛谷P1919 A*B problem 快速傅里叶变换模板 [FFT]
题目传送门 A*B problem 题目描述 给出两个n位10进制整数x和y,你需要计算x*y. 输入输出格式 输入格式: 第一行一个正整数n. 第二行描述一个位数为n的正整数x. 第三行描述一个位数 ...
随机推荐
- Image Recognition
https://www.tensorflow.org/tutorials/image_recognition
- [BJWC2012]冻结
[BJWC2012]冻结 luogu BZOJ 分层图最短路,层与层之间连半边权边 #include<bits/stdc++.h> using namespace std; const i ...
- Alex 的 Hadoop 菜鸟教程: 第2课 hadoop 安装教程 (CentOS6 CDH分支 yum方式)
原帖地址:http://blog.csdn.net/nsrainbow/article/details/36629339 我们这个教程是在 centos 上安装cdh的教程,并且使用的是yum方式. ...
- 期刊搜索问题——SCI、EI、IEEE和中文期刊
1.SCI.EI收录是什么意思? SCI和EI都是收录,并不是实体的期刊出版社,相当于具有高品质期刊出版社的合体(或统充),隔一段时间(几年或者几个月)SCI会进行评估,哪些出版社不具有被SCI收录的 ...
- 【leetcode刷题笔记】Merge k Sorted Lists
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. 题 ...
- echarts相关设置
1.显示隐藏工具栏 注释toolbox即可 /* toolbox: { show : true, feature : { dataView ...
- Linux查看硬盘使用情况
df df - report file system disk space usage df是查看文件系统磁盘使用情况的命令.如: # df -h Filesystem Size Used Avail ...
- mini2440移植uboot 2014.04(三)
我修改的代码已经上传到github上,地址:https://github.com/qiaoyuguo/u-boot-2014.04-mini2440.git 参考文档: s3c2440手册(下载地址) ...
- Android系统Recovery工作原理之使用update.zip升级过程分析(三)【转】
本文转载自:http://blog.csdn.net/mu0206mu/article/details/7464699 以下的篇幅开始分析我们在上两个篇幅中生成的update.zip包在具体更新中所经 ...
- docker网络模型
docker run -it --rm --net none --name test centos:newer /bin/bash --net none的作用是创建一个封闭的容器,容器只有lo接口,只 ...