L1-046 整除光棍

这个题太巧了,自己写好长时间都没写出来,最后还是看了大神代码才明白,思路确实太棒了,无可挑剔,主要思想就是利用字符串来存这个很长很大的数,n从1开始每次*10+1来算对K的商,取模后继续循环直到能除尽也就是直到对K取模等0跳出。代码如下:

#include<stdio.h>  
int n;  
char ans[1005];  
int main()  
{  
    while(~scanf("%d", &n))  
    {  
        int p = 0;  
        int now = 1;  
        for (int len = 1; ; ++len)  
        {  
            if(p || now / n)ans[p++] = '0' + now / n;  
            now %= n;  
            if (now == 0)  
            {  
                ans[p] = 0;  
                printf("%s %d\n", ans, len);  
                break;  
            }  
            now = now * 10 + 1;  
        }  
    }  
    return 0;  
}  

 

posted @ 2018-03-19 18:45  NoRain丶  阅读(137)  评论(0编辑  收藏  举报