求分数的循环节的长度
两个整数做除法,有时会产生循环小数,其循环部分称为:循环节
比如,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 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现