zoukankan      html  css  js  c++  java
  • 1792 关于数论中的互质数的最大不能组合数

    例题:HDOJ 1792 A New Change Problem
    题意:给定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的倍数,并且是平均分配它的旁证,可见HDOJ 1222 Wolf and Rabbit
    设 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不互素,那{1 (mod m)}不能被m组合,同样也不能被n和m组合

    我们能求出各个剩余类的nkmin之后,不能组合数的个数就是每个剩余类中小于各自nkmin的数的个数总和。
    观察如下:
    M = 5,N = 3
    {0(mod 5)}:0,5,10,15……
    {1(mod 5)}:16,11,16……
    {2(mod 5)}:2,712,17……
    {3(mod 5)}:3,8,13,18……
    {4(mod 5)}:49,14,19……
    红色的就是不能组合数,可以看出在剩余类中它的数目有规律
    Total = [0+1+2] + [0+1]
    因为m和n互质,必有一个不完全周期
    整理以后,可得公式 Total = (n-1)*(m-1)/2
  • 相关阅读:
    sqlplus edit 方式设置成vi
    oracle minus union intersect
    子查询中可以包含order by 子句--(在from里面)
    Linux 7 Ansible 初学 一个简单的 playbook 学习 yum 模块
    Linux 7 Ansible 初学 配置被控制机器的 YUM 源
    Linux 7 安装 Ansible 并作基本的配置
    Linux 7 安装开发工具包 Development Tools
    Linux 7.0 安装 mariadb 数据库及初始化,创建数据库,创建用户
    Linux bash初学 if语句
    Linux bash初学 case语句
  • 原文地址:https://www.cnblogs.com/anderson0/p/1456964.html
Copyright © 2011-2022 走看看