bzoj 1876 高精
首先我们知道,对于两个数a,b,他们的gcd情况有如下形式的讨论
当a为奇数,b为偶数的时候gcd(a,b)=gcd(a div 2,b)
当b为奇数,a为偶数的时候gcd(a,b)=gcd(a,b div 2)
当a为偶数,b为偶数的时候gcd(a,b)=2*gcd(a div 2,b div 2)
当a为奇数,b为奇数的时候,根据欧几里德定律,有gcd(a,b)=gcd(a-b,b) (a>b)时
那么这道题就变成了不断地缩小a,b的范围了。直接高精就行了。当然数据为1,10^1000的时候会tle,题目比较良心没有这样的数据。
高精写渣了。
- /**************************************************************
- Problem:
- User: BLADEVIL
- Language: Pascal
- Result: Time_Limit_Exceed
- ****************************************************************/
- //By BLADEVIL
- var
- s1, s2 :ansistring;
- f1, f2 :boolean;
- ans :ansistring;
- a, b, c :array[..] of longint;
- i :longint;
- doit :longint;
- function max(s1,s2:ansistring):boolean;
- begin
- if length(s1)>length(s2) then exit(true);
- if (length(s1)=length(s2)) and (s1>s2) then exit(true);
- exit(false);
- end;
- function divid(s:ansistring):ansistring;
- var
- i :longint;
- len :longint;
- ss :ansistring;
- begin
- fillchar(a,sizeof(a),);
- len:=length(s);
- for i:= to len do a[(len-i) div +]:=a[(len-i) div +]*+ord(s[i])-;
- len:=(len+) div ;
- for i:=len downto do
- if a[i] mod = then
- a[i]:=a[i] div else
- begin
- a[i]:=a[i] div ;
- a[i-]:=a[i-]+;
- end;
- a[]:=a[] div ;
- divid:='';
- for i:=len downto do
- begin
- str(a[i],ss);
- if a[i]< then divid:=divid+'';
- if a[i]< then divid:=divid+'';
- if a[i]< then divid:=divid+'';
- if a[i]< then divid:=divid+'';
- if a[i]< then divid:=divid+'';
- if a[i]< then divid:=divid+'';
- divid:=divid+ss;
- end;
- while (divid[]='') and (length(divid)>) do delete(divid,,);
- end;
- function jian(s1,s2:ansistring):ansistring;
- var
- len1, len2 :longint;
- ss :ansistring;
- i :longint;
- begin
- fillchar(a,sizeof(a),);
- fillchar(b,sizeof(b),);
- fillchar(c,sizeof(c),);
- len1:=length(s1);
- for i:= to len1 do a[(len1-i) div +]:=a[(len1-i) div +]*+ord(s1[i])-;
- len2:=length(s2);
- for i:= to len2 do b[(len2-i) div +]:=b[(len2-i) div +]*+ord(s2[i])-;
- len1:=(len1+) div ;
- len2:=(len2+) div ;
- for i:= to len1 do
- begin
- c[i]:=c[i]+a[i]-b[i];
- if c[i]< then
- begin
- c[i]:=c[i]+;
- c[i+]:=c[i+]-;
- end;
- end;
- jian:='';
- for i:=len1 downto do
- begin
- str(c[i],ss);
- if c[i]< then jian:=jian+'';
- if c[i]< then jian:=jian+'';
- if c[i]< then jian:=jian+'';
- if c[i]< then jian:=jian+'';
- if c[i]< then jian:=jian+'';
- if c[i]< then jian:=jian+'';
- jian:=jian+ss;
- end;
- while (jian[]='') and (length(jian)>) do delete(jian,,);
- end;
- function mul(s:ansistring):ansistring;
- var
- len :longint;
- i :longint;
- ss :ansistring;
- begin
- len:=length(s);
- fillchar(a,sizeof(a),);
- for i:= to len do a[(len-i) div +]:=a[(len-i) div +]*+ord(s[i])-;
- len:=(len+) div ;
- for i:= to len do a[i]:=a[i]*;
- for i:= to len do
- begin
- a[i+]:=a[i+]+a[i] div ;
- a[i]:=a[i] mod ;
- end;
- inc(len);
- mul:='';
- for i:=len downto do
- begin
- str(a[i],ss);
- if a[i]< then mul:=mul+'';
- if a[i]< then mul:=mul+'';
- if a[i]< then mul:=mul+'';
- if a[i]< then mul:=mul+'';
- if a[i]< then mul:=mul+'';
- if a[i]< then mul:=mul+'';
- mul:=mul+ss;
- end;
- while (mul[]='') and (length(mul)>) do delete(mul,,);
- end;
- begin
- readln(s1);
- while (s1[]='') and (length(s1)>) do delete(s1,,);
- readln(s2);
- while (s2[]='') and (length(s2)>) do delete(s2,,);
- doit:=;
- while s1<>s2 do
- begin
- if ord(s1[length(s1)]) mod = then f1:=true else f1:=false;
- if ord(s2[length(s2)]) mod = then f2:=true else f2:=false;
- if f1 and f2 then
- begin
- s1:=divid(s1);
- s2:=divid(s2);
- inc(doit);
- end else
- begin
- if f1 then s1:=divid(s1);
- if f2 then s2:=divid(s2);
- if (not f1) and (not f2) then
- if max(s1,s2) then s1:=jian(s1,s2) else s2:=jian(s2,s1);
- end;
- end;
- ans:=s1;
- for i:= to doit do ans:=mul(ans);
- writeln(ans);
- end.
bzoj 1876 高精的更多相关文章
- BZOJ.1210.[HNOI2004]邮递员(插头DP Hash 高精)
BZOJ 洛谷 http://www.cnblogs.com/LadyLex/p/7326874.html 插头DP.\(m+1\)个插头的状态需要用三进制表示:\(0\)表示无插头,\(1\)表示是 ...
- bzoj 3287: Mato的刷屏计划 高精水题 && bzoj AC150
3287: Mato的刷屏计划 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 124 Solved: 43[Submit][Status] Desc ...
- BZOJ.1005.[HNOI2008]明明的烦恼(Prufer 高精 排列组合)
题目链接 若点数确定那么ans = (n-2)!/[(d1-1)!(d2-1)!...(dn-1)!] 现在把那些不确定的点一起考虑(假设有m个),它们在Prufer序列中总出现数就是left=n-2 ...
- bzoj 1089: [SCOI2003]严格n元树【dp+高精】
设f[i]为深度为i的n元树数目,s为f的前缀和 s[i]=s[i-1]^n+1,就是增加一个根,然后在下面挂n个子树,每个子树都有s[i-1]种 写个高精就行了,好久没写WA了好几次-- #incl ...
- bzoj 4807: 車【组合数+高精+线性筛】
设n>m,答案是\( C_n^m \),然后高精就行了 具体做法是先把指数筛出来,然后对每个数因数分解,记录质因子个数,最后被除数减去除数质因子个数,把剩下的质因子乘起来就行了 #include ...
- bzoj 1754: [Usaco2005 qua]Bull Math【高精乘法】
高精乘法板子 然而WA了两次也是没救了 #include<iostream> #include<cstdio> #include<cstring> using na ...
- bzoj 1876
传送门 http://www.lydsy.com/JudgeOnline/problem.php?id=1876 二进制gcd 学到了(' ' ) 高精还得压位,最开始没写压位,然后调了1h ...
- Linux 高精確的時序(sleep, usleep,nanosleep) from:http://blog.sina.com.cn/s/blog_533ab41c0100htae.html
Linux 高精確的時序(sleep, usleep,nanosleep) (2010-04-14 17:18:26) 转载▼ 标签: 杂谈 分类: linux 首先, 我会说不保证你在使用者模式 ( ...
- c++ 普通高精除高精
//codevs3118 高精度练习之除法 //打出了高精除高精,内心有点小激动. //还记得已开始学的时候非常难打 #include<cstdio>#include<cstring ...
随机推荐
- 「个人训练」Radar Installation(POJ-1328)
这条题目A了十次...emmmmm 其实不难就是一个贪心.... 先说下算法(之前的和现在的) 之前考虑的其实很简单.用平面几何即可将雷达可以放置的区域转化为区间(顺便判断是否无解.问题就比较简单了: ...
- 怎么在windows10中关闭Windows Defender?
通过修改注册表,永久禁用Windows Defender 打开注册表编辑器. 按 Win +R键入regedit,点击确定. 定位需要修改的注册表 其路径如下 HKEY_LOCAL_MACHIN ...
- tomcat8编码设置和gc异常解决
用startup.bat启动 编码解决: 用编辑器打开catalina.bat文件找到set "JAVA_OPTS=%JAVA_OPTS% %JSSE_OPTS% " 更改为 se ...
- 阿里云DTS VS MySQLdump
云平台的到来,使得越来越多用户的数据库由云下迁到云上.对于这种情况,阿里对此提出两种方案,一种是MySQL自带的MySQLdump,另外一种就是阿里云的DTS. DTS支持异构数据源之间的数据迁移同步 ...
- 安装配置hadoop
在master中安装并且配置hadoop (1).将hadoop-2.6.4.tar.gz安装包复制到hadoop文件目录下(直接赋值进去就行) (2).解压安装包haoddp-2.6.4.tar.g ...
- truffle开发一个简单的Dapp
1.安装Truffle:npm install -g truffle 2.建立项目目录并进入:mkdir pet-shop-tutorial cd pet-shop-tutorial 3.使用truf ...
- ORACLE和SQL语法区别归纳
数据类型比较类型名称 Oracle SQLServer 比较字符数据类型 CHAR CHAR 都是固定长度字符资料但oracle里面最大度为2kb,SQLServer里面最大长度为8kb ...
- LTE:上行调度请求(Scheduling Request,SR) LTE:下行资源分配类型
http://blog.sina.com.cn/s/blog_927cff010101a7yh.html 上行调度请求(Scheduling Request,SR) 如果UE没有上行数据要传输,eNo ...
- lnmp1.4,400,500,错误
Thinkphp5或其他主流框架,入口文件未放在根目录下,比如Thinkphp5 入口文件放在/public/index.php vhost需要指向/public目录 一键安装包通常会报 open_b ...
- [剑指Offer] 20.包含min函数的栈
题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数. [思路1]两个栈Stack和Min,Stack为当前栈中元素,Min为与Stack中元素一一对应的当前栈最小值. cl ...