• AtCoder Beginner Contest 096


    A - Day of Takahashi

    输入a b,问从1月1号到a月b号有几天是月份和日期相同的

    #include<bits/stdc++.h>
    
    using namespace std;
    
    const int N = 1e6 + 5;
    typedef long long LL;
    int a, b;
    int main(){
        cin >> a >> b;
        if (a > b) cout << a - 1 << endl;
        else
            cout << a << endl;
        return 0;
    }
    

    B - Maximum Sum

    给出a b c d

    问每次将abc中的一个数x2,然后替换这个数,一共操作d次,最后的和最大是多少

    直接选择最大的数操作d次即可

    #include<bits/stdc++.h>
    
    using namespace std;
    
    const int N = 1e6 + 5;
    typedef long long LL;
    int a, b, c, k;
    int main(){
        cin >> a >> b >> c >> k;
        int sum = a + b + c;
        int tmp = max({a, b, c});
        while(k--){
            tmp *= 2;
        }
        sum += -max({a, b, c}) + tmp;
        cout << sum << endl;
        return 0;
    }
    

    C - Grid Repainting 2

    输入一个NxM的矩阵 #代表要涂色,.代表不用

    每次涂色时都必须涂上下左右连续的两个方格,问能否完成涂色

    直接看每个#旁边有没有#即可

    #include <bits/stdc++.h>
    
    using namespace std;
    
    const int N = 1e3 + 5;
    typedef long long LL;
    int n, m, f[2][4] = {0, 0, 1, -1, 1, -1, 0, 0};
    char mp[N][N];
    int main() {
        cin >> n >> m;
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= m; j++) {
                cin >> mp[i][j];
            }
        }
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= m; j++) {
                if (mp[i][j] == '.') continue;
                int flag = 0;
                for (int k = 0; k < 4; k++) {
                    int x = i + f[0][k], y = j + f[1][k];
                    if(x>=1&&x<=n&&y>=1&&y<=m){
                        if (mp[x][y] == '#') flag = 1;
                    }
                }
                if(!flag){
                    cout << "No" << endl;
                    return 0;
                }
            }
        }
        cout << "Yes" << endl;
        return 0;
    }
    

    D - Five, Five Everywhere

    要求输出n个数,这n个数满足都是质数,且任取其中5个数,他们的和都是合数,每个数都不能大于55555

    注意到,5乘任何数,尾数要么是0要么是5,也就是说必然是合数,那么直接取尾数相同的n个质数即可,这样可以保证尾数是0或5

    #include <bits/stdc++.h>
    
    using namespace std;
    
    const int N = 1e6 + 5;
    typedef long long LL;
    int n;
    bool is_prime(int x) {
        if (x < 2) return false;  // 1不是素数
        for (int i = 2; i <= x / i;
             ++i)  // 从2循环到sqrt(x),但是循环进行条件不写i <=
                   // sqet(x),因为太慢;不写i * i <= x,因为可能有溢出的风险
            if (x % i == 0) return false;
        return true;
    }
    int main() {
        cin >> n;
        int cnt = 0;
        for (int i = 2; i <= 55555; i++) {
            if (i % 10 == 3) {
                if (is_prime(i)) {
                    cnt++;
                    cout << i << ' ';
                    if (cnt == n) break;
                }
            }
        }
        return 0;
    }
    
  • 相关阅读:
    如何把方法(函数)当参数传递
    致加西亚的信 摘录
    算法:C#数组去除重复元素算法研究
    [转帖]SQL SERVER 2005 安全设置
    [转].NET学习网站收集
    C#你真的懂了吗 啥叫引用2
    比IETEST更好用的浏览器兼容性测试软件[绿色]
    [转帖]使用asp.net访问Oracle的方法汇总
    影响力密码 信任你自己
    [转]自动刷新页面的实现方法总结
  • 原文地址:https://www.cnblogs.com/dyhaohaoxuexi/p/14374605.html
Copyright © 2020-2023  润新知