【比赛】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,所以每个剩余类中都有一些数是的倍数,并且是平均分配
设 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
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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\n",a*b-a-b); 11 return 0; 12 }
分类:
2-2 数论 - 最大公约数和最小公倍数
, 3-1 NOIP
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· .NET 适配 HarmonyOS 进展
· .NET 进程 stackoverflow异常后,还可以接收 TCP 连接请求吗?
· SQL Server统计信息更新会被阻塞或引起会话阻塞吗?
· 本地部署 DeepSeek:小白也能轻松搞定!
· 传国玉玺易主,ai.com竟然跳转到国产AI
· 自己如何在本地电脑从零搭建DeepSeek!手把手教学,快来看看! (建议收藏)
· 我们是如何解决abp身上的几个痛点
· 如何基于DeepSeek开展AI项目