Content

有两个数 \(a,b\),执行如下操作:

  1. 如果 \(a,b\) 中有一个数是 \(0\),结束操作,否则跳到操作 \(2\)。
  2. 如果 \(a\geqslant 2b\),那么 \(a\leftarrow a-2b\),并跳回操作 \(1\),否则跳到操作 \(3\)。
  3. 如果 \(b\geqslant 2a\),那么 \(b\leftarrow b-2a\),并跳回操作 \(1\),否则结束操作。

求出操作结束后的 \(a,b\)。

数据范围:\(1\leqslant a,b\leqslant 10^{18}\)。

Solution

那么我们发现,如果 \(a=10^{18},b=1\) 的极限数据下,直接模拟肯定会时间爆炸的,那么怎么办?我们发现,如果满足要求,那么一个数会一直减一直减,知道这个数不满足要求为止,那么不就是取模操作吗?那么上面的 \(2,3\) 操作换成 \(a\leftarrow a\mod 2b,b\leftarrow b\mod 2a\),不就可以节省很多时间吗?

剩下的就只是判断的问题了。

Code

long long a, b;

void ans(ll a, ll b) {
if(!a || !b) {
writell(a), putchar(' '), writell(b);
return;
}
if(a >= 2 * b) ans(a % (2 * b), b);
else if(b >= 2 * a) ans(a, b % (2 * a));
else {
writell(a), putchar(' '), writell(b);
return;
}
} int main() {
getll(a), getll(b);
ans(a, b);
return 0;
}

最新文章

  1. 模拟AngularJS之依赖注入
  2. zookeeper源码分析之四服务端(单机)处理请求流程
  3. CRM 2013 系统设置新功能一:界面自动保存 及 SDK 中 Xrm.Page.data.entity.save
  4. Windows服务编程Demo
  5. 【转】 xcode中常用快捷键图文并茂解释
  6. FPGA统计摄像头输出-基于MD9T112
  7. COJ 0802 非传统题(二)
  8. [Regex Expression] Match mutli-line number, number range
  9. Django模板-分离的模板
  10. SendMessage用法实例
  11. 保存Druid的监控记录
  12. HTML DOM应用案例1
  13. springCloud系列教程01:Eureka 注册中心集群搭建
  14. ASP.NET Core Web 支付功能接入 微信-扫码支付篇
  15. (Python3) 连加 连乘 代码
  16. NFS存储服务
  17. ES6 的面向对象
  18. web前端开发面试题(答案)
  19. localStorage的使用记录
  20. thinkphp中table方法

热门文章

  1. 《手把手教你》系列技巧篇(四十五)-java+ selenium自动化测试-web页面定位toast-上篇(详解教程)
  2. [GZOI2017]配对统计
  3. 【豆科基因组】木豆Pigeonpea (Cajanus cajan) 292个自然群体重测序2017NG
  4. ubuntu20.04安装EasyConnect兼容性问题解决
  5. 前端2 — CSS — 更新完毕
  6. LeetCode缺失的第一个正数
  7. Flume对接Kafka
  8. 源码分析-Consumer
  9. mysql删除数据后不释放空间问题
  10. 转 onSaveInstanceState()和onRestoreInstanceState()使用详解