思路:

首先,我们知道了他们分钱的操作,并且由于最后他们的钱数相同,所以我们可以用以下代码得知他们最后的钱数:

long long k;//总钱数
long long a,b,c;//a是甲的,b是乙的,c是丙的
cin>>k;//输入总钱数
a=b=c=k/3;//最后大家都一样,所以直接平分

然后由于操作相当于让其中两个数翻倍且让一个数狠狠的减小,所以我们可以用以下代码回溯一次操作:

c=c+a/2+b/2;//把钱换回来!
a/=2,b/=2;//已经还了钱,所以减少钱数

最后,我们就可以快乐的AC这道题啦ψ(`∇´)ψ

AC code:

#include<bits/stdc++.h>
using namespace std;
int main(){
	long long k;
	long long a,b,c;
	cin>>k;
	a=b=c=k/3;
	c=c+a/2+b/2;
	a/=2,b/=2;
	b=b+a/2+c/2;
	a/=2,c/=2;
	a=a+b/2+c/2;
	b/=2,c/=2;
	cout<<a<<" "<<b<<" "<<c<<endl;
	return 0;
}