A. Sasha and the Beautiful Array(模拟)
思路
最大值减去最小值
cpp
#include<iostream>
#include<algorithm>
using namespace std;
const int N = 110;
int a[N];
int main(){
int t, n;
cin>>t;
while(t--){
cin>>n;
for(int i = 0; i < n; i++) cin>>a[i];
int res = *max_element(a, a + n) - *min_element(a, a + n);
cout<<res<<endl;
}
}
B. Sasha and the Drawing(思维)
思维
前 2n - 2 个格子每个贡献两条对角线,剩下 2 个每个贡献一条对角线
cpp
#include<iostream>
using namespace std;
int main(){
int t, n, k;
cin>>t;
while(t--){
cin>>n>>k;
//如果是前 2n - 2 个格子,那就除 2 向上取整
if(k <= 4 * n - 4) cout<<(k - 1) / 2 + 1<<endl;
else cout<<2 * n - 2 + k - (4 * n - 4)<<endl;
}
return 0;
}
C. Sasha and the Casino(倍投法)
思路
赢的时候可以赢 y * (k - 1), 那么如果输的时候余额必须大于 y * (k - 1),k 为 2 就是倍投法
cpp
#include<iostream>
using namespace std;
int main(){
int t, k, x, a;
cin>>t;
while(t--){
cin>>k>>x>>a;
//y 存储每次需要的本金,sum 存储总共需要的本金
long long sum = 0, f = 1;
for(int i = 0; i <= x; i++){
y = sum / (k - 1) + 1;
sum += y;
if(sum > a){
f = 0;
break;
}
}
if(f) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
return 0;
}