分肉【结论】

>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,k109T10


>解题思路

(没时间打题解了,先咕着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;
}

猜你喜欢

转载自blog.csdn.net/qq_43010386/article/details/120557158