事先声明,这个方法不是我想出来的,其中运用同余模定理,但是被我改进了一下。变得更简单。
#include<iostream>
using namespace std;
int a[530000];
int main()
{
int i,n,j,k;
while(cin>>n&&n)
{
a[0]=-1;
a[1]=1;
for(i=2;a[i-1]!=0;i++)
a[i]=(a[i/2]*10+i%2)%n; //关键步骤
i--;
for(j=i,k=0;j>0;k++)
{
if(j%2==0)
a[k]=0;
else
a[k]=1;
j=j/2;
}
for(i=0;i<k;i++)
cout<<a[k-1-i];
cout<<endl;
}
}