【题解】第五届石家庄铁道大学程序设计竞赛热身赛题解
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; } } }