尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
UVa 834 Continued Fractions
题目描述给定一个有理数分子和分母均为整数分母为正将其展开为连分数形式。连分数定义为[b0;b1,b2,…,bn]b01b11b2⋯1bn [b_0; b_1, b_2, \ldots, b_n] b_0 \cfrac{1}{b_1 \cfrac{1}{b_2 \cdots \cfrac{1}{b_n}}}[b0​;b1​,b2​,…,bn​]b0​b1​b2​⋯bn​1​1​1​其中b0b_0b0​为整数bkb_kbk​k0k 0k0为正整数且为了唯一性要求bn1b_n 1bn​1当n0n 0n0时。输入包含若干对整数分子、分母对每个有理数输出其对应的连分数展开。输入格式输入包含若干行每行两个整数aaa和bbb分别表示分子和分母。输入直至文件结束。输出格式对于每个有理数输出一行格式为[b0;b1,b2,...,bn]其中各项为连分数系数。若分子为000则b00b_0 0b0​0且后续无项。样例输入43 19 1 2样例输出[2;3,1,4] [0;2]题目分析连分数展开可通过欧几里得算法实现。对于有理数a/ba/ba/bb0b 0b0有ab⌊a/b⌋a mod bb \frac{a}{b} \lfloor a/b \rfloor \frac{a \bmod b}{b}ba​⌊a/b⌋bamodb​令b0⌊a/b⌋b_0 \lfloor a/b \rfloorb0​⌊a/b⌋余数ra mod br a \bmod bramodb。若r0r 0r0则展开结束。否则将br\frac{b}{r}rb​继续展开得到后续系数。这个过程等同于反复进行带余除法直到余数为000。该算法自然产生满足bn1b_n 1bn​1的唯一展开因为最后一个非零余数对应的商必定大于111当n0n 0n0时。若分子为000则b00b_0 0b0​0且展开结束。解题思路采用循环实现连分数展开步骤确定如下步骤1\texttt{1}1. 读入分子aaa和分母bbb。步骤2\texttt{2}2. 输出左括号[然后输出b0a/bb_0 a / bb0​a/b整数除法。步骤3\texttt{3}3. 令aa mod ba a \bmod baamodb。若a0a 0a0则直接输出右括号]并换行结束该有理数的处理。步骤4\texttt{4}4. 否则输出分号;然后进入循环。在循环中每次交换aaa和bbb输出a/ba / ba/b此时aaa为原分母bbb为原余数然后更新aa mod ba a \bmod baamodb。若a0a 0a0则退出循环否则输出逗号,并继续循环。步骤5\texttt{5}5. 循环结束后输出右括号]换行。该算法时间复杂度和欧几里得算法一致为O(log⁡min⁡(a,b))O(\log \min(a,b))O(logmin(a,b))空间复杂度O(1)O(1)O(1)。代码实现// Continued Fractions// UVa ID: 834// Verdict: Accepted// Submission Date: 2016-12-02// UVa Run Time: 0.000s//// 版权所有C2016邱秋。metaphysis # yeah dot net#includebits/stdc.husingnamespacestd;intmain(intargc,char*argv[]){cin.tie(0);cout.tie(0);ios::sync_with_stdio(false);intnumerator,denominator;while(cinnumeratordenominator){cout[numerator/denominator;numerator%denominator;boolprintCommafalse;while(numerator0){if(printComma)cout,;else{cout;;printCommatrue;}swap(numerator,denominator);coutnumerator/denominator;numerator%denominator;}cout]\n;}return0;}总结本题利用欧几里得算法将有理数展开为连分数输出的系数序列自动满足唯一性条件bn1b_n 1bn​1。输出格式固定第一项为整数部分后跟分号和逗号分隔的后续项。算法直接在欧几里得过程中输出商无需额外处理特殊情况。该解法简洁且完全确定适用于任意有理数。
RELATED

相关推荐

构建 Coding Agent 的飞轮:Feedback Loop、Benchmark、Agent Engineers

构建 Coding Agent 的飞轮:Feedback Loop、Benchmark、Agent Engineers

构建 Coding Agent 的飞轮:Feedback Loop、Benchmark、Agent Engineers 摘要 随着大语言模型能力的持续跃迁,Coding Agent 正从概念验证走向真实的软件研发流程。然而,许多团队发现核心瓶颈不在于模型能力本身,而在于 Agent 难以持续优化——行为不可控、效果不可量化、优…

📅 2026/10/22 18:53:04
TIA博途WinCC IO域确认功能实现:防误操作实战指南

TIA博途WinCC IO域确认功能实现:防误操作实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/9/27 13:00:21
Dota2 TI小组赛瑞士轮解析:VG让一追二赢下关键战,XM滚滚游龙背后的版本逻辑

Dota2 TI小组赛瑞士轮解析:VG让一追二赢下关键战,XM滚滚游龙背后的版本逻辑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/9/19 9:03:12
MORE NEWS

更多资讯

📰

电工证微信里面怎么查在哪考

电工证微信里面怎么查在哪考 你刚转岗到焦作,听说没有电工证就没办法上岗?现在工地、工厂、维修单位对特种作业证的要求越来越严, 电工证 是刚需。但你知道 电工证微信里面怎么查 ,又不知道 在哪考 ,这事儿别急,我来帮你理清楚。…

📰

南安电工证报名官方报名入口在哪里找?工地太忙根本没时间复习考试

南安电工证报名官方报名入口在哪里找?工地太忙根本没时间复习考试 工地太忙根本没时间复习考试,报名电工证后该怎么安排复习时间?很多人在忙于工作的时候,想着“等有空再报名考试”,结果一拖再拖,错过了最佳考试时间,甚至影响了证书的办理流程。…

📰

南安电工证报名多少钱?外省证能转过来吗?

南安电工证报名多少钱?外省证能转过来吗? 之前考的证在外省能不能转过来?这个问题几乎每个准备考电工证或者已经考过的人都问过。特别是现在南安电工证报名人数越来越多,很多人担心自己在外省考的证到了南安之后还能不能用。而且,…

📰

水电工证考试科目电子证书查询

电工证考试科目官方回应来了!没证真的干不了活儿 你是不是也像我一样,刚毕业或者准备转行,到处投简历,结果面试官一句话就卡住了:“你有电工证吗?”别急,这事儿真不是你不行,是这证没考下来,连门都进不去。我之前在工地干了三年水电工,后来想转正,…

📰

佛山年审电工证查询别被坑!手把手教你查电子证书流程

佛山年审电工证查询别被坑!手把手教你查电子证书流程 你是不是也这样?拿着电工证却不知道怎么年审,怕被中介骗钱,更怕证件过期影响工作?别急,这篇文章直接带你搞清楚佛山年审电工证查询的全流程,从官方渠道到避坑指南,一网打尽!…

📰

诸城特种作业操作证过期了不知道怎么复审延期?上岗必备全流程拆解

诸城特种作业操作证过期了不知道怎么复审延期?上岗必备全流程拆解 证书过期了不知道怎么复审延期?你是不是正卡在复审流程里,眼看着证书快过期却手忙脚乱?特别是在诸城这种劳动力密集的城市,特种作业操作证几乎是 上岗必备…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬