求分数的循环节的长度
两个整数做除法,有时会产生循环小数,其循环部分称为:循环节
比如,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 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端