【2019.8.9 慈溪模拟赛 T1】数论(a)(打表找规律)

比赛巧思:直觉胜过复杂算法
本文记录了一次编程比赛中,作者原本打算使用复杂的莫比乌斯反演算法解决问题,但在手造数据和暴力对拍后,发现简单直观的解法——直接计算矩形区域内整点数量,即为n*m,巧妙地避开了复杂算法的陷阱。文章通过代码示例,展示了如何快速解决此类问题。

莫比乌斯反演

血亏!

比赛时看到这题先写了个莫比乌斯反演,然后手造了几组数据和暴力对拍的时候发现,居然答案就是\(nm\)。。。

吐槽数据范围太小。。。

下面给上出题人对此题的解释:

原式的物理意义,就是从坐标原点(0,0),用每一种合法的斜率,穿过坐标[1~n,1~m]的方阵中的整点的个数,总数即 n*m。

代码

#include<bits/stdc++.h>
#define Tp template<typename Ty>
#define Ts template<typename Ty,typename... Ar>
#define Reg register
#define RI Reg int
#define Con const
#define CI Con int&
#define I inline
#define W while
using namespace std;
int n,m,X;
int main()
{
    freopen("a.in","r",stdin),freopen("a.out","w",stdout);
    return scanf("%d%d%d",&n,&m,&X),printf("%d",1LL*n*m%X),0;//输出nm
}

转载于:https://www.cnblogs.com/chenxiaoran666/p/Contest20190809T1.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值