>Link
luogu U137469
>Description
两只狗在大街上发现了T大块肉。狐狸跑过来想帮它们分肉,可有了上次被坑的经历,两只狗拒绝它,选择自己分。 对于每一块肉,甲狗和乙狗把肉一扯开,甲狗会得n千克的肉,乙狗得m千克的肉,少肉的那条狗会抢对方的肉,使 自己的肉多一倍。抢了k次后两条狗都累了,那么此时少肉的一方剩下多少千克的肉呢?(注:若两狗的肉一样多, 甲狗会主动抢乙狗的肉)
对于100%的数据, n , m , k ≤ 1 0 9 , T ≤ 10 n,m,k≤10^9,T≤10 n,m,k≤109,T≤10
>解题思路
(没时间打题解了,先咕着QAQ
>代码
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#define LL long long
using namespace std;
int T;
LL n, m, k;
LL power (LL aa, LL bb, LL Mod)
{
LL ret = 1;
for (; bb; bb >>= 1, aa = aa * aa % Mod)
if (bb & 1) ret = ret * aa % Mod;
return ret;
}
void work ()
{
scanf ("%lld%lld%lld", &n, &m, &k);
LL p = power (2, k, n + m);
printf ("%lld\n", min (p * n % (n + m), p * m % (n + m)));
}
int main()
{
scanf ("%d", &T);
while (T--)
work ();
return 0;
}