L1-046 整除光棍(模拟除法)
从11或者111开始一次一次的除,直到可以整除.
#include<cstdio>
using namespace std;
int main()
{
int n;scanf("%d",&n);
int cnt=0,tmp=n,k=1;//k一直充当被除数的作用
while(tmp)//该数本身的位数
{
++cnt;
k=k*10+1;
tmp/=10;
}
if(n==k/10)//本身就是光棍数,不适合这样.11之后k变成了111;12应该从111开始模拟除法
{
printf("1 %d\n",cnt);
return 0;
}
while(k!=1) {
++cnt; //另补1的个数
printf("%d",k/n);
k-=k/n*n;//余数
k=k*10+1; //新的被除数
}
printf(" %d\n",cnt);
}