这个题是给有数竞基础的人出的吧,不然没法做

辗转相减法+优化,这个题卡时,要压1000

注:

1、赋值顺序

2、特判

3、手残

码:

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int a[10005],b[10005],la,lb,i,j,jw,ans[10005],daan[10005];
char ca[10005],cb[10005];
int main()
{ans[0]=ans[1]=1;scanf("%s",ca+1);scanf("%s",cb+1);int la=strlen(ca+1);int lb=strlen(cb+1);while(la>=1){a[++a[0]]=ca[la]-'0';la--;if(la==0)break;a[a[0]]+=(ca[la]-'0')*10;la--;if(la==0)break;a[a[0]]+=(ca[la]-'0')*100;la--;}while(lb>=1){b[++b[0]]=cb[lb]-'0';lb--;if(lb==0)break;b[b[0]]+=(cb[lb]-'0')*10;lb--;if(lb==0)break;b[b[0]]+=(cb[lb]-'0')*100;lb--;} while(1){ if(a[0]<b[0])swap(a,b);else for(i=a[0];i>=1;i--)      //比大小   if(a[i]>b[i]){break;}else if(a[i]<b[i]){swap(a,b);break;}if(b[0]==1&&b[1]==0)break;   int cnt=0;if(a[1]%2==0){cnt++;for(i=a[0];i>=1;i--){a[i]+=jw*1000;jw=a[i]%2;a[i]=a[i]/2;}while(a[a[0]]==0)a[0]--;            }if(b[1]%2==0){++cnt;for(i=b[0];i>=1;i--){b[i]+=jw*1000;jw=b[i]%2;b[i]=b[i]/2;}while(b[b[0]]==0)b[0]--;}if(cnt==2){for(i=1;i<=ans[0];i++){int o=jw+ans[i]*2;ans[i]=o%1000;jw=o/1000;} while(jw)ans[++ans[0]]=jw%1000,jw/=1000;}if(cnt==0){for(i=a[0];i>=1;i--){if(a[i]<b[i])a[i+1]-=1,a[i]+=1000;a[i]=a[i]-b[i];}while(a[a[0]]==0&&a[0]!=1)a[0]--;}}daan[0]=a[0]+ans[0]-1;
for(i=1;i<=a[0];i++)
for(j=1;j<=ans[0];j++)
{daan[i+j-1]+=ans[j]*a[i];
}
for(i=1;i<=daan[0];i++)
{
int o=daan[i]+jw;
jw=o/1000;
daan[i]=o%1000;}
while(jw)daan[++daan[0]]=jw%1000,jw/=1000;
for(i=daan[0];i>=1;i--)
{
if(daan[i]>=100||daan[0]==i)printf("%d",daan[i]);else if(daan[i]>=10)printf("0%d",daan[i]);else printf("00%d",daan[i]);
}
}

bzoj1876 [SDOI2009]SuperGCD 辗转相减+高精相关推荐

  1. BZOJ1876 [SDOI2009]SuperGCD 【高精 + GCD优化】

    题目 Sheng bill有着惊人的心算能力,甚至能用大脑计算出两个巨大的数的GCD(最大公约 数)!因此他经常和别人比 赛计算GCD.有一天Sheng bill很嚣张地找到了你,并要求和你比 赛,但 ...

  2. BZOJ1876:[SDOI2009]SuperGCD 高精度+更相减损法

    更相减损法:gcd(a,b)=gcd(a/2,b/2)∗2gcd(a,b)=gcd(a/2,b/2)∗2gcd(a,b) = gcd(a/2, b/2)*2 当a,b均为偶数 gcd(a,b)=gcd ...

  3. BZOJ1876 SDOI2009 SuperGCD 其他

    题意:求两个大正整数的GCD 题解: 出题人的愿意肯定是觉得SDOI不出大模拟说不过去,嘛,考场上这么出肯定没问题 不过BZOJ允许使用Python就是个错误-- a=(int)(input()) b ...

  4. 【C/C++】最大公约数和最小公倍数(辗转相除、更相减损、stein)

    一.最大公约数和最小公倍数 数学性质: 如果b是A和B的公约数,那么:b也是A+B的约数,即b是A,B,A+B的公约数.b也是A-B的约数,即b是A,B,A-B的公约数.更一般地,对于任意整数x.y, ...

  5. [Luogu1891]疯狂LCM[辗转相减法]

    题意 多组询问,每次给定 \(n\) ,求:\(\sum_{i=1}^nlcm(i,n)\) . \(\rm T \leq 3\times 10^4\ ,n \leq 10^6\). 分析 推式子: ...

  6. 最详细最简单:最大公因数求法、辗转相除法、更相减损法,入门ACM,杭电水题,算法递归,初级算法题一看就懂

    文章目录 前言 一.名称定义 1.最大公约数 2.辗转相除法 3.更相减损法 二.ACM杭电入门题 1.解题思路 三.解题参考代码(C语言,C++) 0.最优算法(C++) 1.辗转相除求解(C语言) ...

  7. C++算法:辗转相除法与更相减损术

    辗转相除法与更相减损术 1.我们已经学过求最大公因数的知识,你能求出18与30的公因数吗? 2.如果公因数比较大而且根据我们的观察又不能得到一些公因数,我们又应该怎样求它们的最大公因数?比如求8251 ...

  8. 更相减损术程序设计c语言,更相减损术

    本词条缺少概述图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧! 更相减损术是出自<九章算术>的一种求最大公约数的算法,它原本是为约分而设计的,但它适用于任何需要求最大公约数的场合 ...

  9. 求最大公约数(更相减损术辗转相除法)

    求解最大公约数的多种Way: 1 暴力解决法:M不断自减找到最大公约数. 2 辗转相除法:反复做除法运算,当余数为 0 时,取当前算式除数为最大公约数. 3 更相减损术:若两者都为偶数,进行折半,直到 ...

最新文章

  1. 前端分离的前端开发工具_使我成为前端开发人员工作的工具和资源
  2. Facebook开源算法代码库,轻松复现前沿视频理解模型
  3. 关于「Xception」和「DeepLab V3+」的那些事
  4. boost::mpi模块is_mpi_op 功能的测试
  5. javasript --- 一个日期规范(x秒前,x分前...)
  6. 日发帖 发帖频率 发帖时段_先发帖
  7. OpenCV 像素的读取与操作
  8. 百度Apollo无人驾驶路测更进一步 李彦宏感慨:终于可以不用安全员了
  9. linux noprobe参数,find 命令的参数详解
  10. ubuntu 安装docker
  11. PXE环境下安装系统(DHCP+TFTP+HTTP+kickstart)
  12. 开放 接口 饿了么_饿了么口碑启动生态赋能计划 将在210城开放智慧餐厅业务合作窗口...
  13. 遥控器鼠标模式切换 android 4.4
  14. 什么是php 开发,php开发是什么?
  15. 亲测可行ie8与ie11共存方法支持win7x64等
  16. Android N开发者预览版(第二版)发布
  17. 几个实用的app和网站
  18. MySQL简介以及简单的下载和安装
  19. Android Manifest
  20. 【Chips】跨时钟域的亚稳态处理、为什么要打两拍不是打一拍、为什么打两拍能有效?

热门文章

  1. 地理必修一三大类岩石_高中地理 | 必备基础知识点干货
  2. 设计模式笔记一:工厂模式
  3. 韩顺平php视频笔记70 面向对象编程的三大特征1 抽象 封装
  4. Android笔记 ANR Application Not Response
  5. WORD如何创建三线表样式?
  6. 浮动和清浮动,内外边距和margin的坑
  7. day30 java的IO流(3)
  8. day28 java的IO流 (1)对IO的初步了解
  9. jdbc mysql 存储过程查询数据_jdbc调用mysql存储过程实现代码
  10. Activiti工作流学习笔记01