• 湖南省第十二届大学生计算机程序设计竞赛 problem A 2016


    如果 a * b % 2016 == 0

    如果a = 1 ,且 a * b % 2016 == 0

    考虑一下a = 2017的时候

    2017 * b = (2016 + 1) * b % 2016 == 0必定成立

    那么就是说1中搭配成的b,2017一样能搭配。

    同样:4033 * b = (2016 + 2016 + 1) * b % 2016 == 0必定成立

    所以,我可以枚举[1,2016]中[1,2016]中,i * j % 2016 == 0的对数,然后乘上对应的[1,n]中有i这个数的个数,代替数也算,代替数就是那些等价数,1 --- 2017 --- 4033 

    #include <cstdio>
    #include <cstdlib>
    #include <cstring>
    #include <cmath>
    #include <algorithm>
    using namespace std;
    #define inf (0x3f3f3f3f)
    typedef long long int LL;
    
    #include <iostream>
    #include <sstream>
    #include <vector>
    #include <set>
    #include <map>
    #include <queue>
    #include <string>
    LL n, m;
    const int maxn = 2016 + 20;
    LL numn[maxn], numm[maxn];
    void work () {
       LL tnk = n / 2016;
       LL rn =  n % 2016;
       memset (numn, 0, sizeof numn);
       memset (numm, 0, sizeof numm);
       for (int i = 1; i <= rn; ++i) {
           numn[i] = tnk + 1;
       }
       for (int i = rn + 1; i <= 2016; ++i) {
           numn[i] = tnk;
       }
       LL tmk = m / 2016;
       LL rm = m % 2016;
       for (int i = 1; i <= rm; ++i) {
           numm[i] = tmk + 1;
       }
       for (int i = rm + 1; i <= 2016; ++i) {
           numm[i] = tmk;
       }
       LL ans = 0;
       for (int i = 1; i <= 2016; ++i) {
           for (int j = 1; j <= 2016; ++j) {
               if ((i * j) % 2016 == 0) {
                   ans += numn[i] * numm[j];
               }
           }
       }
       cout << ans << endl;
    }
    int main () {
    #ifdef local
        freopen("data.txt","r",stdin);
    #endif
        while (cin >> n >> m) {
            work ();
        }
        return 0;
    }
    View Code
  • 相关阅读:
    [模板] 多项式全家桶
    [模板] 最大流和费用流分别的两种做法
    [模板] Miller_Rabin和Pollard_Rho
    [模板] 半平面交
    hdu4624 Endless Spin (min-max容斥+dp)
    luogu5193 炸弹 (扫描线)
    luogu4055 游戏 (二分图博弈)
    [模板]后缀自动机
    [模板]fhqTreap
    loj2977 巧克力 (斯坦纳树+随机化)
  • 原文地址:https://www.cnblogs.com/liuweimingcprogram/p/5838338.html
Copyright © 2020-2023  润新知