L1-046 整除光棍(模拟除法)

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);
}