二哥好强啊
yyr的妹子数
三个值
a
,
b
,
c
a,b,c
a,b,c,一些操作
- a + b ≤ c ⇒ a = a ∗ 2 , b = b ∗ 2 , c = c − a − b a+b\le c\Rightarrow a=a*2,b=b*2,c=c-a-b a+b≤c⇒a=a∗2,b=b∗2,c=c−a−b
- a + b > c ⇒ p = min ( ⌊ c 2 ⌋ , min ( a , b ) − 1 ) , a = a − p , b = b + p − c , c = c ∗ 2 a+b>c\Rightarrow p=\min(\lfloor\frac{c}{2}\rfloor,\min(a,b)-1),a=a-p,b=b+p-c,c=c*2 a+b>c⇒p=min(⌊2c⌋,min(a,b)−1),a=a−p,b=b+p−c,c=c∗2
然后又是想到倒数第二步没想到最后一步
p
p
p就是个幌子
a
+
b
a+b
a+b合并为一个整体,记为
d
d
d,这两个操作变为
- d ≤ c ⇒ d = d ∗ 2 , c = c − d d\le c\Rightarrow d=d*2,c=c-d d≤c⇒d=d∗2,c=c−d
- d > c ⇒ d = d − c , c = c ∗ 2 d>c\Rightarrow d=d-c,c=c*2 d>c⇒d=d−c,c=c∗2
并且有
c
+
d
c+d
c+d为定值,记为
s
s
s
有
c
=
s
−
d
,
d
=
d
−
c
=
2
d
−
s
c=s-d,d=d-c=2d-s
c=s−d,d=d−c=2d−s或
d
=
2
d
d=2d
d=2d
发现每次操作带来的
d
d
d为
2
d
m
o
d
s
2d\bmod s
2dmods
就完啦
#include<bits/stdc++.h>
using namespace std;
#define in Read()
int in{
int i=0;char f=true;char ch=0;
while(!isdigit(ch)&&ch!='-') ch=getchar();
if(ch=='-') ch=getchar(),f=false;
while(isdigit(ch)) i=(i<<3)+(i<<1)+ch-48,ch=getchar();
return f?i:-i;
}
int s;
int qpw(int a,int b){
int res=1;
while(b){
if(b&1) res=1ll*res*a%s;
a=a*a%s;
b>>=1;
}
return res;
}
int main(){
int T=in;
while(T--){
int a=in,b=in,c=in,k=in;
s=a+b+c;
printf("%d\n",1ll*c*qpw(2,k)%s);
}
return 0;
}
long long 还要卡你
我已经无话可说