首页 > 代码库 > AC日记——计算循环节长度 51nod 1035
AC日记——计算循环节长度 51nod 1035
最长的循环节
思路:
我们尝试一种最简单的方法,模拟;
如何模拟呢?
每个数,对它模k取余,如果它的余数没有出现过,就补0继续模;
所以,当一个余数出现两次时,当前的长度即为循环节长度;
来,上代码:
#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;int n,ans=0,k=1,d,p=0,flag;bool if_[10005];int main(){ scanf("%d",&d); for(n=2;n<=d;n++) { ans=0,k=1; memset(if_,false,sizeof(if_)); while(1) { if(!k) break; while(k<n) k*=10; if(if_[k]) break; if_[k]=true,k%=n,ans++; } if(ans>=p) p=ans,flag=n; } cout<<flag; return 0;}
AC日记——计算循环节长度 51nod 1035
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。