P2090 数字对

题目描述

对于一个数字对(a, b),我们可以通过一次操作将其变为新数字对(a+b, b)或(a, a+b)。

给定一正整数n,问最少需要多少次操作可将数字对(1, 1)变为一个数字对,该数字对至少有一个数字为n。

直接爆搜会TLE

突然发现这个过程跟辗转相除法类似,

那么对于$(a,b)$->$(1,1)$

如果还原的过程$a==b==1$还原成功,反之失败

加速这个过程的方法$(a,b)$->$(b$,$a$%$b)$需要的步数是$a/b$

#include<bits/stdc++.h>

#define inf 0x7fffffff
#define LL long long
using namespace std; LL n,ans;
LL calc(LL a,LL b){
if(b==) return a-;
if(!b) return inf;
return a/b+calc(b,a%b);
}
int main()
{
scanf("%lld",&n);
ans=inf;
for(LL i=;i<=n;i++)
ans=min(ans,calc(n,i)); printf("%lld",ans); return ;
}

最新文章

  1. JavaScript 三级联动
  2. django 微信企业号 返回text消息
  3. Girls and Boys(poj 1466)
  4. 【Cocos2d入门教程七】三分钟看懂Cocos2d坐标系
  5. jbpm6 开发环境搭建
  6. hibernate中持久化对象的生命周期(三态:自由态,持久态,游离态 之间的转换)
  7. 简单2步实现 asp.net mvc ckeditor 图片上传
  8. Java集合框架类
  9. ArcGIS Runtime SDK是什么?
  10. MySQL优化三 表结构优化
  11. Ubuntu14.04下安装Flash Player
  12. 《java入门第一季》之面向对象面试题(面向对象都做了哪些事情)
  13. [Luogu P1354]房间最短路问题
  14. 工厂参观记:.NET Core 中 HttpClientFactory 如何解决 HttpClient 臭名昭著的问题
  15. [python 练习] 计算个税
  16. AJPFX:什么是外汇交易
  17. Linux部署Web应用程序超链接下载中文名称文件404问题解决办法
  18. [No0000189]改善C#程序的建议10:用Parallel简化Task
  19. php 文件压缩
  20. 浅谈文档协作在工程设计中的应用——共享excel计算书

热门文章

  1. Android合并两个APP的详细做法(掌握)
  2. Codeforces Round #228 (Div. 2) C. Fox and Box Accumulation
  3. 00020970-0000-0000-C000-000000000046
  4. Linux Centos 下安装软件 三种方式
  5. 红米note怎么打开USB调试模式
  6. hdu 6035(树形dp)
  7. 【USACO 2008FEB】 旅馆
  8. 洛谷P2680 运输计划——树上差分
  9. js 获取图片宽高 和 图片大小
  10. Pycharm初始创建项目和环境搭建(解决aconda库文件引入不全等问题)