嘛,基础的高精度除法,大数除低精度数。循环得出结果判断结果即可
#include<iostream>
#include<algorithm>
#include<string>
#include<vector>
using namespace std;
string str;
vector<int> num;
vector<int> except(vector<int> nums)
{
vector<int> ans;
int t=0;
for(int i=0;i<nums.size();i++)
{
t=t*10+nums[i];
ans.push_back(t/2);
t%=2;
}
reverse(ans.begin(),ans.end());
while(ans.back()==0 && ans.size()>1)ans.pop_back();
reverse(ans.begin(),ans.end());
if(!(ans.size()==1 && ans[0]==0))
for(int i=0;i<ans.size();i++)cout<<ans[i];
cout<<" ";
return ans;
}
int main()
{
cin>>str;
vector<int> k;
for(int i=0;i<str.size();i++)num.push_back(str[i]-'0');
for(int i=0;i<str.size();i++)cout<<num[i];
cout<<" ";
k=except(num);
while(1)
{
k=except(k);
if(k.size()==1 && k[0]==0)break;
}
return 0;
}