首页 > 试题广场 >

连分数

[编程题]连分数
  • 热度指数:1035 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
一个分数可以写成如下连分数的形式:



现在给你一个分数,你能否将它写成连分数。

输入描述:
首行一个正整数 ,代表测试数据的组数

接下来  行每行给出两个正整数 

保证输入的分数都可以写成有穷连分数的形式


输出描述:
每组测试数据输出一行,格式见样例
示例1

输入

3
103 24
21 73
4 2

输出

103/24 = 4+1/{3+1/{2+1/3}}
21/73 = 0+1/{3+1/{2+1/10}}
4/2 = 2
头像 水题杀手heng
发表于 2021-04-19 21:56:38
B---连分数 #include<iostream> #include<string> using namespace std; typedef long long ll; int main() { in 展开全文
头像 蒟蒻果冻01
发表于 2026-03-08 16:32:01
注意到跟辗转相除有关,直接递归模拟即可,代码非常短且浅显易懂,注意最里层是一个正整数,不应该用花括号包裹。 #include <iostream> using namespace std; int main() { auto f = [](auto &&f, 展开全文
头像 飞鸢泛惊鸿
发表于 2026-03-08 22:19:38
import sys input=sys.stdin.readline print=sys.stdout.write def compute(num,deno): integer=num//deno remain=num%deno if remain==0: 展开全文
头像 许愿有秋招offer
发表于 2021-04-19 21:00:24
看了其他大佬AC的代码,感觉和他们差距好远。ACM赛制真的锻炼代码能力,之前刷题都是OI和IOI赛制,遇到ACM赛制没有反馈就有些慌^^ #include<iostream> #include<string> #include<memory.h> using na 展开全文
头像 Rs_Iomanip
发表于 2026-03-08 11:55:45
第一眼看到题目发现毫无头绪 经过笔算之后发现题目中要求的过程实际上是一个辗转相除法的过程 这里以样例1进行解释p = 103, q = 24;被除数/除数 = 商 ~ 余数103 / 24 = 4 ~ 7 24 / 7 = 3 ~ 37 展开全文
头像 昵称识别不了被气到红温
发表于 2026-03-08 14:44:46
一道递归类型的题目,注意下一层到底是整数还是需要继续运算的算术表达式就没问题(╹ڡ╹ ) #include <iostream> using namespace std; typedef long long ll; void f(ll p,ll q) { ll x=p/q 展开全文
头像 lemonyyds
发表于 2026-03-08 00:19:33
#include<bits/stdc++.h> #define endl '\n' using namespace std; signed main() { ios::sync_with_stdio(0); cin.tie(0); int T=1;cin>& 展开全文
头像 此在Dasein
发表于 2026-03-08 04:10:16
该问题最适合采用迭代或递归式的欧几里得算法(Euclidean Algorithm)。连分数的每一层系数项 正好对应于执行 时的整数商。 对于分数 : 令 ,余数 。 。 重复上述过程处理 ,直到余数为 0。 整除情况:如果初始 ,则只需输出 的商,无需后续的 结构。 终止条件:当当前 展开全文
头像 chenlan114
发表于 2026-03-08 10:23:35
#include<bits/stdc++.h> using namespace std; using ll=long long; void solve(ll P,ll Q){ cout<<P<<'/'<<Q<<" = & 展开全文
头像 olone
发表于 2026-03-08 11:59:53
#include<bits/stdc++.h> using namespace std; int T; int p,q; inline string work(int x,int y) { if(x%y == 0) return to_string(x/y); in 展开全文