【题解】第五届石家庄铁道大学程序设计竞赛热身赛题解
A - 欢乐的a和b
这个题需要了解一个公式
看数据范围,如果直接乘会爆long long
#include <bits/stdc++.h>
#define mod 1000000007
using namespace std;
int main(){
int T;
scanf("%d", &T);
while (T--){
long long a, b;
scanf("%lld%lld", &a, &b);
a %= mod;
b %= mod;
printf("%lld\n", (a * b) % mod);
}
return 0;
}B - 欢乐的abc
考虑三角形性质:任意两边之和大于第三边
#include <iostream>
using namespace std;
int main(){
int t;
cin >> t;
for (int i = 1; i <= t; i++){
int a, b, c;
cin >> a >> b >> c;
if ((a + b > c) && (b + c > a) && (a + c > b))
cout << "YES" << endl;
else
cout << "NO" << endl;
}
return 0;
}C - 欢乐贴砖块
这个铺砖块的题目我们现在要求的是这个房间我是否能够铺满,如果是偶数乘偶数,我们就很容易能够
判断出来这个是不是能铺满,详情请看偶数判定代码,就是如果是奇数乘偶数,我们需要先转换成为偶
数乘偶数,然后再按照偶数乘偶数那样判定就可以了
#include <iostream>
using namespace std;
int main() {
int T;
cin >> T;
while (T--) {
int n, m;
cin >> n >> m;
int k;
cin >> k;
if (n % 2 == 0 && m % 2 == 0) {
if (k % 2)
cout << "NO" << endl;
else
cout << "YES" << endl;
continue;
}
if (n % 2) {
k -= m / 2;
if (k % 2 || k < 0)
cout << "NO" << endl;
else
cout << "YES" << endl;
} else {
k = m * n / 2 - k;
k -= n / 2;
if (k % 2 || k < 0)
cout << "NO" << endl;
else
cout << "YES" << endl;
}
}
}
查看16道真题和解析

