求循环小数的表示以及循环节长度
问题:
输入整数a和b,输出a/b的循环小数表示以及其循环节长度。例如 a=5 b=43 小数表示为0.(116279069767441860465),循环节长度为21;
分析:
长除法的计算过程
①mod = a%b;
②小数 = (mod*10) / b;
③mod = (mod*10)%b;
循环②③步,当出现重复的余数的时候,也就是循环节出现了
注意事项:
当循环上述2、3步骤时,出现余数为零的情况,即计算结果不是循环小数时,直接输出索引值,循环节长度为0。
C++实现:
1 #include<iostream> 2 using namespace std; 3 4 int main() { 5 int a, b, t, k; 6 cin >> a >> b; 7 int index = 0; 8 t = a%b; 9 if (t ==0) { 10 cout << index << " " << index << endl; 11 return 0; 12 } 13 int flag[10000] = {0}; 14 memset(flag,-1,1000); 15 k =0; 16 int length = 0; 17 while (true) { 18 t = (t*10)%b; 19 if (t == 0) { 20 index = ++k; 21 length = 0; 22 break; 23 } 24 25 if(flag[t] >= 0) { 26 index = flag[t]; 27 length = k - index; 28 break; 29 } 30 flag[t]=k; 31 k++; 32 } 33 34 cout << index << " " << length << endl; 35 return 0; 36 }
专注搬砖,擅长搬砖砸自己的脚~~~
Email:
ltwbuaa@163.com
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!