zoukankan      html  css  js  c++  java
  • 2019UMS培训day6解题报告

    T1:

    链接:https://www.luogu.org/problem/P2520

    $sol:$数学推导(咕

    代码:

    #include <bits/stdc++.h>
    typedef int intt;
    #define int long long
    using namespace std;
    int a, b, x, y, t, d;
    int gcd(int a, int b) { return b == 0 ? a : gcd(b, a % b); }
    bool check(int x, int y) { return (x % d == 0 && y % d == 0) || ((x + a) % d == 0 && (y + b) % d == 0) || ((x + b) % d == 0 && (y + a) % d == 0) || ((x + a + b) % d == 0 && (y + a + b) % d == 0); }
    intt main() {
        cin >> t;
        while(t--) {
            cin >> a >> b >> x >> y;
            d = gcd(a, b) << 1;
            check(x, y) ? (cout << "Y" << endl) : (cout << "N" << endl);
        }
        return 0;
    }

    T2:

    链接:https://www.luogu.org/problem/P4626

    $sol$:欧拉筛处理出范围内的素数,用素数的最高次幂来表示即可达到最终结果。此题卡空间卡常,需要使用$bitset$等技巧优化。

    代码:

    // luogu-judger-enable-o2
    #include <cstdio>
    #include <bitset>
    #include <iostream>
    const int MAXN = 100000005;
    const int mod = 100000007;
    typedef long long ll;
    using namespace std;
    bitset<MAXN> vis;
    int n, cnt, prime[10000005];
    ll ans = 1;
    void get_prime() {
        for(register int i = 2; i <= n; i++) {
            if(!vis[i])
                prime[++cnt] = i;
            for(register int j = 1; i * prime[j] <= n && j <= cnt; j++) {
                vis[i * prime[j]] = 1;
                if(i % prime[j] == 0)
                    break;
            }
        }
    }
    ll calc(int x) {
        ll ans = x;
        while(ans <= n)
            ans = ans * x;
        return ans / x % mod;
    }
    int main() {
        ios::sync_with_stdio(false);
        cin >> n;
        get_prime();
        for(int i = 1; i <= cnt; i++)
            ans = (ans * calc(prime[i]) % mod) % mod;
        cout << ans % mod << endl;
        return 0;
    }

    T3:

    链接:https://www.luogu.org/problem/P1516

    $sol$:解不定方程,最后要注意解的范围。

    代码:

    #include <bits/stdc++.h>
    typedef long long ll;
    using namespace std;
    ll x, y, m, n, l;
    ll exgcd(ll a, ll b, ll &x, ll &y) {
        if(b == 0) {
            x = 1;
            y = 0;
            return a;
        }
        ll gcd = exgcd(b, a % b, x, y);
        ll t = x;
        x = y;
        y = t - a / b * y;
        return gcd;
    }
    int main() {
        cin >> x >> y >> m >> n >> l;
        ll a = n - m, c = x - y;
        if(a < 0) {
            a *= -1;
            c *= -1;
        }
        ll gcd = exgcd(a, l, x, y);
        if(c % gcd != 0) {
            cout << "Impossible" << endl;
            return 0;
        }
        l /= gcd;
        cout << (x * (c / gcd) % l + l) % l << endl;
        return 0;
    }
  • 相关阅读:
    《Rubu基础教程第五版》第一章笔记
    《Linux Command Line and Shell Scripting Bible》Part 14 处理用户输入
    Phpstorm-Xdebug配置
    Phpstorm-svn配置
    Phpstorm-sftp配置
    3前端案例-遮罩
    2前端案例-选项卡样式
    1前端案例-tag标签+随机位置
    Phpstorm-php在线手册配置
    mysql语句总结
  • 原文地址:https://www.cnblogs.com/BeyondLimits/p/11325083.html
Copyright © 2011-2022 走看看