2020牛客NOIP赛前集训营-提高组(第三场)T1牛半仙的妹子数

这是一个关于数学逻辑的问题,涉及到一系列属性值的变化规则。给定三个妹子的属性值AAA, BBB, CCC,根据特定条件,这些属性值会按一定方式互相影响。题目要求求解在经过KKK次变化后,第三个妹子的属性值。解决方案通过模运算和指数运算来确定最终值。

牛半仙有三个妹子,属性值分别为 AAA,BBB,CCC。 这三个妹子有心灵感应,当一个人的属性值变化时其他人的属性值也会跟着变化。
变化规律如下: 假设第一个妹子属性值为 AAA ,第二个妹子属性值为 BBB,第三个妹子属性值为 CCC

  • A+B≤CA+B≤CA+BC 则第一个妹子的属性值变为 2A2A2A,第二个妹子的属性值变为 2B2B2B,第三个妹子的属性值变为 C−A−BC−A−BCAB
  • 否则 设 AAA,BBB 中较小的属性值为 WWWP=min(⌊C/2⌋,W−1)P=min(\lfloor C/2\rfloor,W-1)P=min(C/2,W1) 。 则第一个妹子的属性值变为 A−PA−PAP,第二个妹子的属性值变为 B+P−CB+P-CB+PC,第三个妹子的属性值变为 2C2C2C
    牛半仙想知道第三个妹子经过 KKK 次变化后的属性值。 因为 牛半仙还要去和妹子畅谈人生,所以他把这个问题交给你了。
    链接:https://ac.nowcoder.com/acm/contest/7609/A
    来源:牛客网

简化体面给定两个数 a (a=A+B)a\ (a=A+B)a (a=A+B)b (b=C)b\ (b=C)b (b=C)
b>ab>ab>ab=b−a , a=2⋅ab=b-a\ ,\ a=2\cdot ab=ba , a=2a
否则 b=2⋅b , a=a−bb=2\cdot b\ ,\ a=a-bb=2b , a=ab

讨论b的取值分类讨论可以得出结论
ans=(2k⋅b)mod(a+b)ans=(2^k \cdot b)mod(a+b)ans=(2kb)mod(a+b)

#include <bits/stdc++.h>
using namespace std;
typedef unsigned long long ull;
ull t,u,v,mod,b,k,ans;
inline ull ksm(ull x,ull y){
	ull res=1;
	while(y){
		if(y&1)res=res*x%mod;
		x=x*x%mod; y>>=1;
	} 
	return res;
}
int main(){
	scanf("%llu",&t);
	while(t--){
		scanf("%llu %llu %llu %llu",&u,&v,&b,&k);
		mod=u+v+b;
		ans=ksm(2,k)*b%mod;
		printf("%llu\n",ans);
	}
}
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值