这个题太巧了,自己写好长时间都没写出来,最后还是看了大神代码才明白,思路确实太棒了,无可挑剔,主要思想就是利用字符串来存这个很长很大的数,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 ", ans, len); break; } now = now * 10 + 1; } } return 0; }