P1530 分数化小数 Fractions to Decimals【洛谷算法习题】

发布时间:2026/7/26 22:45:01

P1530 分数化小数 Fractions to Decimals【洛谷算法习题】
P1530 分数化小数 Fractions to Decimals网页链接P1530 分数化小数 Fractions to Decimals题目描述写一个程序输入一个形如N D \dfrac{N}{D}DN​的分数输出它的小数形式。如果小数有循环节的话把循环节放在一对圆括号中。例如1 3 0.33333333 … \dfrac{1}{3}0.33333333\ldots31​0.33333333…写成0. ( 3 ) 0.(3)0.(3)41 333 0.123123123 … \dfrac{41}{333} 0.123123123\ldots33341​0.123123123…写成0. ( 123 ) 0.(123)0.(123)整数x xx写成x .0 x.0x.0。输入格式输入包含两个整数N NN和D DD1 ≤ N , D ≤ 10 5 1 \leq N,D \leq 10^51≤N,D≤105。输出格式输出按照上面规则计算出的小数表达式。如果结果长度大于76 7676每行输出76 7676个字符。输入输出样例 #1输入 #145 56输出 #10.803(571428)说明/提示翻译来自NOCOWUSACO 2.4解题思路本题是模拟长除法 循环节检测的经典题型核心是通过记录每次除法后的余数来定位循环节的起点和长度并按要求格式化输出。1. 问题等价转化分数转小数整数部分为⌊ N / D ⌋ \lfloor N/D \rfloor⌊N/D⌋若整除则补.0。小数部分通过不断将余数乘10 1010后除以D DD获得每一位。有限与循环若分母D DD的所有质因子只包含2 22和5 55则小数有限直接除尽即可。否则为无限循环小数循环节从某次出现重复余数时开始。循环节定位在模拟除法时用数组bk[x]记录余数x xx实际上是当前被除数n nn即上一轮余数乘10 1010首次出现的位置已输出的小数位数。当同一个被除数再次出现时两次出现之间的部分即为一个循环节。2. 算法实现预处理与输出整数部分计算q N / D输出q.。若N % D 0补0后直接结束。初始化计数器v已输出字符数用于控制每行76 7676字符的换行。判断有限小数将D DD反复除以2 22和5 55若最终变为1 11则小数有限。有限情况下模拟除法直接逐位输出直到余数为0 00无需括号。无限循环小数处理模拟长除法每次n (n % d) * 10商digit n / d保存到数组a用bk[n]记录当前商的位置z。若某个n已经记录过说明循环开始循环节起点flag bk[n]。输出时在位置flag前输出(然后依次输出a[1..z]最后补)。其间通过v累计字符数每76 7676个字符输出一次换行。注意整数部分和小数点也计入总长度开头输出q.时已累加相应字符数。3. 复杂度分析时间复杂度每位小数一次除法最长循环节不超过D DD余数最多D DD种D ≤ 10 5 D \le 10^5D≤105总时间O ( D ) O(D)O(D)非常快。空间复杂度O ( D ) O(D)O(D)用于记录余数首次出现位置的数组10 5 10^5105规模完全可行。总结模拟手动长除法的过程利用余数判重找到循环节。有限小数直接输出无限小数精确标记循环起止并添加括号。特别需要注意输出格式每行不超过76 7676个字符。代码简要说明读入与整数部分输出用scanf读取N , D N, DN,Dprintf输出整数部分和小数点并初始化字符计数v。有限小数判断提取D DD中所有2 22和5 55因子若剩余为1 11则进入有限分支直接逐位输出。无限循环小数记录初始化bk数组全0 00z记录已存小数位数。当bk[(n % d) * 10]为空时计算商存入a[z]标记bk[当前被除数] z。一旦发现重复记录循环起点flag。格式化输出遍历i从1 11到z在i flag时输出(并更新计数v。每输出一个数字检查(i v) % 76 0则换行。最后输出)并换行。代码内容#includebits/stdc.husingnamespacestd;#defineendl\ntypedeflonglongll;typedefunsignedlonglongull;typedefvectorvectorllvvt;typedefpairll,llpll;constll N1e310;constll INF1e18;constll M1e610;constll mod1e97;ll n,d,z0,flag,v,a[110000],bk[1100000];intmain(){ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);scanf(%lld%lld,n,d);printf(%lld.,n/d);if(n%d0){printf(0);return0;}ll td;while(t%50)t/5;while(t%20)t/2;if(t1){while(n%d!0){n(n%d)*10;printf(%lld,n/d);}}else{ll qn/d;v;if(!q)v;while(q){q/10;v;}while(!bk[(n%d)*10]){n(n%d)*10;a[z]n/d;bk[n]z;}flagbk[(n%d)*10];for(ll i1;iz;i){if(iflag){printf(();v;}printf(%lld,a[i]);if((iv)%760)printf(\n);}printf()\n);}return0;}

相关新闻

41-DataviewJS-JavaScript高级查询

41-DataviewJS-JavaScript高级查询

2026/7/26 22:35:00

41 DataviewJS:JavaScript高级查询 从一个看板说起 去年夏天,前端开发者小林接手了一个内部工具项目——团队需要用Obsidian管理多个并行开发任务的进度。最初他用Dataview的DQL查询做了几个表格,但很快发现需求越来越复杂:需要根据任务状态自动变色、需要点击按钮快速变…

learn-rust-101项目实战:从零构建你的第一个Rust应用

learn-rust-101项目实战:从零构建你的第一个Rust应用

2026/7/26 22:35:00

learn-rust-101项目实战:从零构建你的第一个Rust应用 【免费下载链接】learn-rust-101 A guide to aid you in your journey of becoming a Rustacean (Rust developer). 项目地址: https://gitcode.com/gh_mirrors/le/learn-rust-101 learn-rust-101是一个…

Multichain Auditor核心功能解析:为什么它是跨链审计必备工具?

Multichain Auditor核心功能解析:为什么它是跨链审计必备工具?

2026/7/26 22:35:00

Multichain Auditor核心功能解析:为什么它是跨链审计必备工具? 【免费下载链接】multichain-auditor Observations and tips checklist for auditing protocols on multiple chains 🧐 项目地址: https://gitcode.com/gh_mirrors/mu/multic…

【研发类-游戏开发Skills】threejs-animation 技能

【研发类-游戏开发Skills】threejs-animation 技能

2026/7/26 23:35:03

Three.js动画系统 - 关键帧动画、骨骼动画、变形目标、动画混合。用于动画对象、播放GLTF动画、创建程序运动或混合动画。 技能概述 下载地址:agentic-awesome-skills/skills/threejs-animation at main sickn33/agentic-awesome-skills GitHub threejs-animat…

Common Divisors

Common Divisors

2026/7/26 23:35:03

Common Divisors CodeForces - 1203C题目要我们求数组中所有元素的公约数的数量,看到公约数让我想到了最大公约数__gcd,然后就是数据量太大了,如果是直接求每个数组的约束统计计数会爆,其实想一想所有公约数的数量就是最大公约数的约数数量&a…

Linux内核任务查找机制:find_task_by_pid与pid_task对比

Linux内核任务查找机制:find_task_by_pid与pid_task对比

2026/7/26 23:35:03

1. Linux内核任务查找机制解析在Linux内核开发中,进程和线程的管理是核心功能之一。内核提供了多种机制来查找和操作任务结构体(task_struct),其中find_task_by_pid()、get_task_struct()和pid_task()这三个函数尤为重要。这些函数构成了内核中任务管理的…

音乐解锁革命:如何在3分钟内释放被加密的音乐文件

音乐解锁革命:如何在3分钟内释放被加密的音乐文件

2026/7/26 23:35:03

音乐解锁革命:如何在3分钟内释放被加密的音乐文件 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库: 1. https://github.com/unlock-music/unlock-music ;2. https://git.unlock-music.dev/um/web 项目地址: https://g…

3步搞定Windows 10老旧串口设备通信难题:PL-2303驱动修复全攻略

3步搞定Windows 10老旧串口设备通信难题:PL-2303驱动修复全攻略

2026/7/26 23:35:03

3步搞定Windows 10老旧串口设备通信难题:PL-2303驱动修复全攻略 【免费下载链接】pl2303-win10 Windows 10 driver for end-of-life PL-2303 chipsets. 项目地址: https://gitcode.com/gh_mirrors/pl/pl2303-win10 还在为Windows 10系统下老旧串口设备只能接…

提示词×产品描述双引擎模板:兼容Claude-4/Gemini-2.5/Qwen3的跨模型适配方案(限前200名领取审计清单)

提示词×产品描述双引擎模板:兼容Claude-4/Gemini-2.5/Qwen3的跨模型适配方案(限前200名领取审计清单)

2026/7/26 23:25:02

更多请点击: https://kaifayun.com 第一章:提示词 提示词(Prompt)是人与大语言模型交互的核心媒介,它直接决定了模型输出的准确性、相关性与创造性。高质量的提示词并非简单提问,而是融合任务定义、上下文…

[具身智能-649]:个人电脑搭建 RTSP 服务完整方案(Windows / Ubuntu 双平台,适配 RDK X5 rtsp2display 调试)

[具身智能-649]:个人电脑搭建 RTSP 服务完整方案(Windows / Ubuntu 双平台,适配 RDK X5 rtsp2display 调试)

2026/7/26 0:04:02

目标:电脑作为RTSP 服务端,循环推送 H264/H265 视频流; RDK X5 通过 rtsp2display 拉流预览,完全不需要在开发板编译 live555。 提供两套成熟方案: ✅ 方案 A:FFmpeg(最简单,优先推…

PDF合并与动态水印的工程化方案:2026国内免费工具实测对比

PDF合并与动态水印的工程化方案:2026国内免费工具实测对比

2026/7/26 0:04:02

一、背景与测试方案 在实际项目交付中,PDF文件合并与版权保护水印的叠加是一个高频但容易被低估的技术需求。典型的处理链路涉及:多源PDF的文件流合并、页面级水印渲染(含透明度混合与图层叠加)、输出文件体积控制。看似简单的操作…

PDF拆分压完图糊了?2026国内免费实测,档案员都在用的组合方案

PDF拆分压完图糊了?2026国内免费实测,档案员都在用的组合方案

2026/7/26 0:04:02

说实话,提到PDF拆分再压缩,我真是被折腾得够呛。 上个月公司年度合同归档,一份300多页的PDF总合同,需要按年份拆分成三个独立文件,再分别压缩到10MB以内方便邮件发送各部门确认。我心想这还不简单?先找个海…

[具身智能-649]:个人电脑搭建 RTSP 服务完整方案(Windows / Ubuntu 双平台,适配 RDK X5 rtsp2display 调试)

[具身智能-649]:个人电脑搭建 RTSP 服务完整方案(Windows / Ubuntu 双平台,适配 RDK X5 rtsp2display 调试)

2026/7/26 0:04:02

目标:电脑作为RTSP 服务端,循环推送 H264/H265 视频流; RDK X5 通过 rtsp2display 拉流预览,完全不需要在开发板编译 live555。 提供两套成熟方案: ✅ 方案 A:FFmpeg(最简单,优先推…

PDF合并与动态水印的工程化方案:2026国内免费工具实测对比

PDF合并与动态水印的工程化方案:2026国内免费工具实测对比

2026/7/26 0:04:02

一、背景与测试方案 在实际项目交付中,PDF文件合并与版权保护水印的叠加是一个高频但容易被低估的技术需求。典型的处理链路涉及:多源PDF的文件流合并、页面级水印渲染(含透明度混合与图层叠加)、输出文件体积控制。看似简单的操作…

PDF拆分压完图糊了?2026国内免费实测,档案员都在用的组合方案

PDF拆分压完图糊了?2026国内免费实测,档案员都在用的组合方案

2026/7/26 0:04:02

说实话,提到PDF拆分再压缩,我真是被折腾得够呛。 上个月公司年度合同归档,一份300多页的PDF总合同,需要按年份拆分成三个独立文件,再分别压缩到10MB以内方便邮件发送各部门确认。我心想这还不简单?先找个海…