bzoj千题计划288:bzoj1876: [SDOI2009]SuperGCD
http://www.lydsy.com/JudgeOnline/problem.php?id=1876
高精压位GCD
对于 GCD(a, b) a>b
若 a 为奇数,b 为偶数,GCD(a, b) = GCD(a, b / 2)
若 a 为偶数,b 为奇数,GCD(a, b) = GCD(a / 2, b)
若 a 为偶数,b 为偶数,GCD(a, b) = 2*GCD(a / 2, b / 2)
若 a 为奇数,b 为奇数,GCD(a, b) = GCD(a - b, b)
vector 压8位 是 压4位 用时的一半
vector 写 高精 真心 方便
#include<cstdio>
#include<cstring>
#include<vector>
#include<algorithm>
#include<iostream> using namespace std; #define N 100000000 typedef vector<int> bignum; inline bignum read()
{
bignum a;
string s,ss;
cin>>s;
reverse(s.begin(),s.end());
while(s.size()>)
{
ss=s.substr(,);
a.push_back(ss[]+ss[]*+ss[]*+ss[]*+ss[]*+ss[]*+ss[]*+ss[]*-*);
s=s.substr(,s.size());
}
int b=;
reverse(s.begin(),s.end());
for(int i=;i<s.size();++i) b=b*+s[i]-;
a.push_back(b);
return a;
} inline bool bigger(bignum a,bignum b)
{
if(a.size()>b.size()) return true;
if(a.size()<b.size()) return false;
for(int i=a.size()-;i>=;--i)
{
if(a[i]>b[i]) return true;
if(a[i]<b[i]) return false;
}
return false;
} inline bool iseven(bignum a)
{
return !(*a.begin()&);
} inline bool iszero(bignum a)
{
return a.size()== && !(*a.begin());
} inline void delzero(bignum &a)
{
while(a.size()>)
{
bignum::iterator it=--a.end();
if(*it) break;
a.erase(it);
}
} inline void sub(bignum &a,bignum b)
{
int i;
for(i=;i<b.size();++i)
{
if(a[i]<b[i]) a[i+]--,a[i]+=N;
a[i]-=b[i];
}
while(i<a.size() && a[i]<)
{
a[i]+=N;
++i;
--a[i];
}
delzero(a);
} inline void half(bignum &a)
{
for(int i=a.size()-;i>=;--i)
{
if(a[i]&) a[i-]+=N;
a[i]=a[i]>>;
}
delzero(a);
} inline void doubled(bignum &a)
{
for(int i=;i<a.size();++i)
{
a[i]<<=;
if(i> && a[i-]>=N) a[i-]-=N,a[i]++;
}
bignum::iterator it=--a.end();
if(*it>=N) *it-=N,a.push_back();
} inline void output(bignum a)
{
int i=a.size()-;
printf("%d",a[i]);
if(!i) return;
for(--i;i>=;--i) printf("%08d",a[i]);
} int main()
{
bignum a=read(),b=read();
int c=;
while()
{
if(bigger(b,a)) swap(a,b);
if(iszero(b)) break;
if(iseven(a) && iseven(b))
{
half(a); half(b);
c++;
}
else if(iseven(a)) half(a);
else if(iseven(b)) half(b);
else sub(a,b); }
while(c--) doubled(a);
output(a);
return ;
}
bzoj千题计划288:bzoj1876: [SDOI2009]SuperGCD的更多相关文章
- bzoj千题计划300:bzoj4823: [Cqoi2017]老C的方块
http://www.lydsy.com/JudgeOnline/problem.php?id=4823 讨厌的形状就是四联通图 且左右各连一个方块 那么破坏所有满足条件的四联通就好了 按上图方式染色 ...
- bzoj千题计划207:bzoj1879: [Sdoi2009]Bill的挑战
http://www.lydsy.com/JudgeOnline/problem.php?id=1879 f[i][j] 表示匹配了i个字符,匹配字符串的状态为j的方案数 枚举下一个字符是什么 计算加 ...
- bzoj千题计划181:bzoj1878: [SDOI2009]HH的项链
http://www.lydsy.com/JudgeOnline/problem.php?id=1878 之前用莫队做的,现在用树状数组 把每种数的第一个出现位置在树状数组中+1 nxt[i] 记录i ...
- bzoj千题计划287:bzoj1228: [SDOI2009]E&D
http://www.lydsy.com/JudgeOnline/problem.php?id=1228 打SG函数表,找规律: 若n是奇数m是奇数,则SG(n,m)=0 若n是偶数m是偶数,则SG( ...
- bzoj千题计划286:bzoj1226: [SDOI2009]学校食堂Dining
http://www.lydsy.com/JudgeOnline/problem.php?id=1226 关键点:一个人只能忍受 ‘紧跟’ 在他 后面的b个人比他先打到饭 dp[i][j][k] 前i ...
- bzoj千题计划196:bzoj4826: [Hnoi2017]影魔
http://www.lydsy.com/JudgeOnline/problem.php?id=4826 吐槽一下bzoj这道题的排版是真丑... 我还是粘洛谷的题面吧... 提供p1的攻击力:i,j ...
- bzoj千题计划280:bzoj4592: [Shoi2015]脑洞治疗仪
http://www.lydsy.com/JudgeOnline/problem.php?id=4592 注意操作1 先挖再补,就是补的范围可以包含挖的范围 SHOI2015 的题 略水啊(逃) #i ...
- bzoj千题计划177:bzoj1858: [Scoi2010]序列操作
http://www.lydsy.com/JudgeOnline/problem.php?id=1858 2018 自己写的第1题,一遍过 ^_^ 元旦快乐 #include<cstdio> ...
- bzoj千题计划317:bzoj4650: [Noi2016]优秀的拆分(后缀数组+差分)
https://www.lydsy.com/JudgeOnline/problem.php?id=4650 如果能够预处理出 suf[i] 以i结尾的形式为AA的子串个数 pre[i] 以i开头的形式 ...
随机推荐
- 历史记录 history
设置显示行数:HISTSISE=5 或 export HISTSIZE=5 永久生效,生效,检查,同118. 储存历史记录文件:cat ~/.bash_history 控制文件:HISTFILESIZ ...
- Myeclipse插件快速生成ssh项目并配置注解 在action层注入service的超详细过程
最近发现,我对于ssh的 自动注入配置 还是不熟悉,于是整理了一下 终于做了一个 简单的 注入配置出来. 以前都是在applicationContext.xml 里面这样配 <bean id=& ...
- 算法精解:DAG有向无环图
DAG是公认的下一代区块链的标志.本文从算法基础去研究分析DAG算法,以及它是如何运用到区块链中,解决了当前区块链的哪些问题. 关键字:DAG,有向无环图,算法,背包,深度优先搜索,栈,BlockCh ...
- java 实现登录验证码 (kaptcha 验证码组件)
验证码的作用: 1.防止广告机注册和发帖.评论.2.防止暴力破解密码,特别是有管理员权限的密码. 在这里介绍一种非常实用的验证码生成工具:kaptcha 这个工具,可以生成各种样式的验证码,因为它是可 ...
- checkBox半选中状态
checkbox 可以半选中,这个特性,很多浏览器都支持 // 用 input.indeterminate 这个属性来获取或者设置半选中状态,必须要用 js 添加属性,才有效果. input.inde ...
- 面向服务的体系架构 SOA(二) --- 服务的路由和负载均衡
2. 服务的路由和负载均衡 1.2.1 服务化的演变 SOA设计思想:分布式应用架构体系对于业务逻辑复用的需求十分强烈,上层业务都想借用已有的底层服务来快速搭建更多.更丰富的应用,降低新业务开展的人力 ...
- CentOS7.4安装MySQL踩坑记录
CentOS7.4安装MySQL踩坑记录 time: 2018.3.19 CentOS7.4安装MySQL时网上的文档虽然多但是不靠谱的也多, 可能因为版本与时间的问题, 所以记录下自己踩坑的过程, ...
- loadrunner 录制中文出现乱码的解决办法
- Spring MVC注解式开发
MVC注解式开发即处理器基于注解的类开发, 对于每一个定义的处理器, 无需在xml中注册. 只需在代码中通过对类与方法的注解, 即可完成注册. 定义处理器 @Controller: 当前类为处理器 @ ...
- web 直播&礼物赠送------腾讯云(四)
直播项目搁置了将近1年,以为都搁浅了,没想到头头又提起来了,这次直播技术更替为了腾讯云,消息系统没变,采用的依然是融云,新增了礼物赠送功能. 项目完成基本就是这样子: 一,播放器 由阿里云转腾讯云,w ...