Pairs of Numbers 辗转相除
# 42. Pairs of Numbers
https://blog.csdn.net/qq_43521140/article/details/107853492
- 出题人:OJ
- 标签:["DFS and Similar"]
- 难度:简单
- 总分数:100
## 题目描述
<p>Let's assume that we have a pair of numbers (a,b). We can get a new pair (a+b,b) or (a,a+b) from the given pair in a single step.</p><p>Let the initial pair of numbers be (1,1). Your task is to find number k, that is, the least number of steps needed to transform (1,1) into the pair where at least one number equals n.</p>
## 解答要求
时间限制:1000ms, 内存限制:100MB
## 输入
<p>The input contains the only integer n (1 ≤ n ≤ 10<sup>6</sup>).<b>Process to the end of file</b>.</p>
## 输出
<p>Print the only integer k.</p>
## 样例
### 输入样例 1:
```
5
1
```
### 输出样例 1:
```
3
0
```
## 提示
```
package main
import "fmt"
var tmp int
var leastep int
func main() {
var n int
for {
_, err := fmt.Scanf("%d", &n)
if err != nil {
return
} else if n == 1 {
fmt.Printf("0\n")
continue
} else if n == 2 {
fmt.Printf("1\n")
continue
}
leastep = n - 1
for i:= 1;i<n;i++{
tmp = 0
dfs(n,i)
leastep = minint(tmp,leastep)
}
//leastep = n + 1
//for i := n/2 + 1; i < n && i/(n-i) <= leastep; i++ {
// leastep = minint(leastep, leaststeps(i, n-i, 1))
//}
fmt.Printf("%d\n", leastep)
}
}
func minint(a, b int) int {
if a >= b {
return b
} else {
return a
}
}
func dfs(a,b int){
if b == 1{
tmp += a-1
return
}
tmp += a/b
dfs(b,a%b)
}
func leaststeps(a, b, steps int) int {
if b == 1 {
return a - 1 + steps
} else if a%b == 0 {
return leastep + 1
} else if steps >= leastep {
return leastep + 1
} else {
return leaststeps(b, a%b, steps+a/b)
}
}
```
Pairs of Numbers 辗转相除的更多相关文章
- Alice and Bob 要用到辗转相减
Alice and BobTime Limit: 1 Sec Memory Limit: 64 MBSubmit: 255 Solved: 43 Description Alice is a be ...
- bzoj 2852: 强大的区间 辗转相除
2852: 强大的区间 Time Limit: 5 Sec Memory Limit: 128 MBSubmit: 45 Solved: 12[Submit][Status][Discuss] D ...
- (中等) CF 585C Alice, Bob, Oranges and Apples,矩阵+辗转相除。
Alice and Bob decided to eat some fruit. In the kitchen they found a large bag of oranges and apples ...
- BZOJ.4031.[HEOI2015]小Z的房间(Matrix Tree定理 辗转相除)
题目链接 辗转相除解行列式的具体实现? 行列式的基本性质. //864kb 64ms //裸的Matrix Tree定理.练习一下用辗转相除解行列式.(因为模数不是质数,所以不能直接乘逆元来高斯消元. ...
- [Luogu1891]疯狂LCM[辗转相减法]
题意 多组询问,每次给定 \(n\) ,求:\(\sum_{i=1}^nlcm(i,n)\) . \(\rm T \leq 3\times 10^4\ ,n \leq 10^6\). 分析 推式子: ...
- Luogu4111 [HEOI2015]小Z的房间 (矩阵树,辗转相除高斯消元)
除法不能用于同余系,要辗转相除.注意不能加入柱子到矩阵. #include <iostream> #include <cstdio> #include <cstring& ...
- CF 403D Beautiful Pairs of Numbers
The sequence of integer pairs (a1, b1), (a2, b2), ..., (ak, bk) is beautiful, if the following state ...
- 数据结构与算法C++描述学习笔记1、辗转相除——欧几里得算法
前面学了一个星期的C++,以前阅读C++代码有些困难,现在好一些了.做了一些NOI的题目,这也是一个长期的目标中的一环.做到动态规划的相关题目时发现很多问题思考不通透,所以开始系统学习.学习的第一本是 ...
- POJ 2348 Euclid's Game(辗转相除博弈+自由度分析)
题目链接:http://poj.org/problem?id=2348 题目大意:给你两个数a,b,Stan和Ollie轮流操作,每次可以将较大的数减去较小的数的整数倍,相减后结果不能小于0,谁先将其 ...
- Pairs of Numbers
#include<stdio.h> //we have defined the necessary header files here for this problem. //If add ...
随机推荐
- 公网可用的RTMP、RTSP测试地址(2021年3月)
好多博客提到的公网可测试的RTSP和RTMP URL大多都不用了,以下是大牛直播SDK(Github)于2021年3月亲测可用的几个URL,有其他可用的URL,也欢迎大家在评论区回复. RTMP流地址 ...
- KingbaseES rownum 与 limit 的 执行计划区别
数据准备 --创建基础数据表100W行 create table test07 as select * from (select generate_series(1, 1000000) id, (ra ...
- Java开发学习(三十四)----Maven私服(二)本地仓库访问私服配置与私服资源上传下载
一.本地仓库访问私服配置 我们通过IDEA将开发的模块上传到私服,中间是要经过本地Maven的 本地Maven需要知道私服的访问地址以及私服访问的用户名和密码 私服中的仓库很多,Maven最终要把资源 ...
- Pod 的生命周期
上图展示了一个 Pod 的完整生命周期过程,其中包含 Init Container.Pod Hook.健康检查 三个主要部分,接下来我们就来分别介绍影响 Pod 生命周期的部分: 首先在介绍 Pod ...
- Compose 模板文件
模板文件是使用 Compose 的核心,涉及到的指令关键字也比较多.但大家不用担心,这里面大部分指令跟 docker run 相关参数的含义都是类似的. 默认的模板文件名称为 docker-compo ...
- PAT (Advanced Level) Practice 1001 A+B Format 分数 20
Calculate a+b and output the sum in standard format -- that is, the digits must be separated into gr ...
- 改善C#程序的方法-3 比较器和LINQ排序
一 创建对象时考虑实现比较器 假设有这样的场景,有一个40个人的学生列表,业务中需针对学生的成绩来进行排序. 可以考虑用IComparable接口和ICompare接口实现: class Progra ...
- JavaScript根据参数获取url中参数名的值
//假设ulr如下var localhost="http://127.0.0.1?name=tom&sex=男&id=1";//正则方法封装function Get ...
- Ruoyi字典源码学习
此文章属于ruoyi项目实战系列 使用目的 什么是字典数据:具体的值(0,1,"Y","N"),对应具体的业务逻辑("男","女& ...
- BigDecimal的运算——加减乘除
BigDecimal的运算--加减乘除 1.初始化(尽量用字符串的形式初始化) BigDecimal num12 = new BigDecimal("0.005"); BigDec ...