类似于大数除法一样模拟,从1开始每次循环判断一下此时的光棍能否整除x。判断能否整除的方法就是此时的光棍除完之后余数是否为零。
#include <bits/stdc++.h>
using namespace std;
int main() {
string s="1";
int len=0;
int num;
cin>>num;
vector<int>ans;
while(true) {
ans.clear();
int mod=0;
int l=0,flag=0;
while(l<s.size()) {
int now = s[l]-'0'+mod;
int tmp = now/num;
if(tmp!=0) {
ans.push_back(tmp);
flag=1;
}
else if(tmp==0&&flag) {
ans.push_back(tmp);
}
mod = (now%num)*10;
l++;
}
if(mod==0&&ans.size()!=0) {
for(int i=0; i<ans.size(); i++) {
cout<<ans[i];
}
cout<<' '<<s.size()<<endl;
break;
}
else s+="1";
}
return 0;
}