51nod 1035 最长的循环节【模拟除法】

来源:互联网 发布:办公软件快捷方式 编辑:程序博客网 时间:2024/06/02 00:39
#include<iostream>#include<string.h>using namespace std;int d[1000000];int fun(int x){  //模拟除法  一点一点的除  直到 一个数出现两次 或者除尽 就结束 返回其长度    int k=1,l=1;    memset(d,0,sizeof(d));    while(1){        k*=10;          k%=x;        d[k]++;        l++;        if(d[k]==2||k==0) break;    }    return l;}int main(){    int n;    cin>>n;    int maxx=0,max=0;    for(int i=1;i<=n;i++){// 对n个数进行一个 取最大的操作        if(fun(i)>maxx){            maxx=fun(i);            max=i;        }    }    cout<<max<<endl;    return 0;}
原创粉丝点击