题目:https://www.patest.cn/contests/gplt/L1-046
模拟除法来解决问题,解决数据过大的问题
#include <iostream>
#include <cmath>
using namespace std;
int main(){
int n;
cin>>n;
int i = 0;
int sum = 1;
int res[10000]; //存储最后的商,开这么大的数组,防止有的过大,造成溢出
while(true){ // 模拟除法
if(sum < n){
sum = sum * 10 + 1;
res[i] = 0;
}
else
{
res[i] = sum / n;
if(sum%n == 0)
break;
sum = (sum % n)*10 + 1;
}
i++;
}
int flag = 0; // 找到第一个不为零的数字
for(int j = 0;j<=i;j++){
if(res[j]!=0){
flag = j;
break;
}
}
for(int j = flag;j<=i;j++){
cout<<res[j];
}
cout<<" "<<i+1; //i+1表示光棍的位数
return 0;
}