这道题显然要用高精度与低精度的除法,我也是现学现用。
看到网上有很短的巧妙方法,我竟然毫无阅读的欲望。
就是因为编程前期学了太多的奇技淫巧,仅仅为了过题,而没有掌握背后的算法,现在编程能力跟人相差甚远。
踏踏实实写点东西才是关键!

#include<bits/stdc++.h>
using namespace std;
int r=0;
struct bign{
	int d[10005];
	int len;
	bign(){
		memset(d, 0, sizeof(d));
		len = 0;
	}
};
bign divide(bign a, int b){
	bign c;
	c.len = a.len;
	for(int i = a.len-1; i >= 0; i--){
		r = r * 10 + a.d[i];
		c.d[i] = r / b;
		r = r % b;	
	}
	while(c.len-1>=1 && c.d[c.len-1] == 0){
		c.len--;
	}
	return c;
}


int main(){
	int x,L=1;
	cin>>x;
	bign s,u;
	while(1){
		u.len = L;
		for(int i=0;i<L;i++){
			u.d[i] = 1;
		}
		r = 0;  //余数每次开始都要置零 
		s = divide(u, x);
		if(r==0){
			for(int i=s.len-1;i>=0;i--) cout<<s.d[i];
			cout<<" ";
			cout<<u.len<<endl;
			return 0;
		}else L++;
	}
	return 0;
}