求分数的循环节的长度

 

两个整数做除法,有时会产生循环小数,其循环部分称为:循环节

比如,11/13 = 0.846153846153...其循环节为846153共六位

 

思路:

模拟除法,只要寻找到相同余数,就找到了循环节

 

代码如下:

复制代码
 1 #include <stdio.h>
 2 #include <string.h>
 3 #include <iostream>
 4 #include <string>
 5 #include <math.h>
 6 #include <algorithm>
 7 #include <vector>
 8 #include <queue>
 9 #include <set>
10 #include <stack>
11 #include <map>
12 #include <sstream>
13 const int INF=0x3f3f3f3f;
14 typedef long long LL;
15 const int mod=1e9+7;
16 const int maxn=1e5+10;
17 using namespace std;
18 
19 vector<int> vt;
20 
21 int main()
22 {
23     int n,m;
24     scanf("%d %d",&n,&m);
25     int t=n;
26     int ans=0;
27     t=t%m;
28     while(1)
29     {
30         vt.push_back(t);//将余数存下 
31         t*=10;
32         t=t%m;
33         if(t==0) break;    //可以除尽 
34         else if(find(vt.begin(),vt.end(),t)!=vt.end())//找到相同的余数,即找到了循环节 
35         {
36             ans=vt.end()-find(vt.begin(),vt.end(),t);//求循环节长度 
37             break;
38         }
39     }
40     printf("%d\n",ans);
41     return 0;
42 }
复制代码
posted @   jiamian22  阅读(1607)  评论(1编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示