看没人写题解我贴一个自己的AC代码
本来想着简单题,直接顺着题目写直接过的.但是还是卡了一下数据范围,思考了一会
没有思考出来有什么数学公式可以去优化,于是想了想看看能不能打表发现规律
用测试样例1把k往高写打表发现当k大于一定的值的时候三个数是会变成相同的
于是在循环中做一下优化,可以直接过这个题
以下是AC代码:
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define MOD
void solve()
{
int a,b,c,k;
cin>>a>>b>>c>>k;
if(a == b && a == c && b == c)
{
cout<<a<<" "<<b<<" "<<c<<" ";
cout<<endl;
return;
}
for(int i = 0;i < k;i++)
{
int x = (b + c) / 2;
int y = (a + c) / 2;
int z = (a + b) / 2;
a = x;
b = y;
c = z;
if(a == b && a == c && b == c)
{
cout<<a<<" "<<b<<" "<<c<<" ";
cout<<endl;
return;
}
}
cout<<a<<" "<<b<<" "<<c<<" ";
cout<<endl;
return;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
int t;
cin>>t;
while(t--)
{
solve();
}
return 0;
}