【题解】第五届石家庄铁道大学程序设计竞赛热身赛题解

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;
        }
    }
}
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务