思路:
我们尝试一种最简单的方法,模拟;
如何模拟呢?
每个数,对它模k取余,如果它的余数没有出现过,就补0继续模;
所以,当一个余数出现两次时,当前的长度即为循环节长度;
来,上代码:
#include#include #include #include 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 =p) p=ans,flag=n; } cout<