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

#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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章