zoukankan      html  css  js  c++  java
  • 【比赛】NOIP2017 小凯的疑惑

    找规律:ans=a*b-a-b

    证明:(可见 体系知识

    gcd(A, B) = 1 → lcm(A, B) = AB

    剩余类,把所有整数划分成m个等价类,每个等价类由相互同余的整数组成

    任何数分成m个剩余类,分别为 mk,mk+1,mk+2,……,mk+(m-1)

    分别记为{0(mod m)},{1(mod m)}……

    而n的倍数肯定分布在这m个剩余类中

    因为gcd(m,n)=1,所以每个剩余类中都有一些数是$n$的倍数,并且是平均分配

    设 kmin = min { k | nk ∈ {i (mod m) } }, i ∈ [0, m)

    则 nkmin 是{i (mod m)}中n的最小倍数。特别的,nm ∈ {0 (mod m)}

    nkmin 是个标志,它表明{i (mod m)}中nkmin 后面所有数,即nkmin + jm必定都能被组合出来

    那也说明最大不能组合数必定小于nkmin

    我们开始寻找max{ nkmin }

    lcm(m, n) = mn,所以很明显(m-1)n是最大的

    因为(m-1)n是nkmin 中的最大值,所以在剩下的m-1个剩余类中,必定有比它小并且能被m和n组合,这些数就是(m-1)n -1,(m-1)n -2,……,(m-1)n -(m-1)

    所以最大不能被组合数就是(m-1)n -m=m*n-m-n

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 #define ll long long
     4 ll a,b;
     5 int main()
     6 {
     7     freopen("math.in","r",stdin);
     8     freopen("math.out","w",stdout);
     9     scanf("%lld%lld",&a,&b);
    10     printf("%lld
    ",a*b-a-b);
    11     return 0;
    12 }
    NOIP2017 小凯的疑惑
  • 相关阅读:
    dom操作
    今天学到的知识点
    3.26随笔
    dom操作
    Ajax
    JSP、EL、JSTL
    Cookie和Session
    HttpServletResponse
    Servlet
    tomcat
  • 原文地址:https://www.cnblogs.com/hongyj/p/7954513.html
Copyright © 2011-2022 走看看