直接用除法算式模拟即可。
需要注意的是要先用while扩大被除数(要找的光棍数),后续 只用if 即可
#include<bits/stdc++.h>
using namespace std;
long long x;
long long cnt=1;
long long k=1;
int main()
{
cin>>x;
while(k<x) k=(k<<3)+(k<<1)+1,++cnt;
printf("%lld",k/x);
k%=x;
while(k)
{
if(k<x) k=(k<<3)+(k<<1)+1,++cnt;
printf("%lld",k/x);
k%=x;
}
cout<<' '<<cnt;
return 0;
} 


京公网安备 11010502036488号