• 蛋糕切割【数论,数学】


    题目大意:

    题目链接:http://10.156.31.134/contestnew.aspx?cid=128
    求一个n×mn imes m的矩阵的对角线经过格子的个数。


    思路:

    有一个显然的结论:当n,mn,m互质时,该矩形的对角线不会经过任意格子之间的点。只会穿过边。反之,n×mn imes m的矩阵对角线经过的节点集合为{(x,y)xZ,yZ,xn(n.m)=ym(n.m)}{(x,y)|xin ^*,yin ^*,frac{x}{frac{n}{(n.m)}}=frac{y}{frac{m}{(n.m)}}}
    所以任意的n,mn,m不互质的情况均可以拆分成(n,m)(n,m)个相同的情况来求。
    n,mn,m互质,为了从左下角到达右上角,它的对角线必然会向上nn个格子,向右mm个格子。减去重复的一个,所以必然会经过n+m1n+m-1个格子。
    代入n=n(n,m),m=m(n,m)n'=frac{n}{(n,m)},m'=frac{m}{(n,m)},答案即为(n+m1)×(n,m)(n'+m'-1) imes (n,m)


    代码:

    #include <cmath>
    #include <cstdio>
    #include <algorithm>
    using namespace std;
    
    int a,b;
    
    int main()
    {
    	scanf("%d%d",&a,&b);
    	int gcd=__gcd(a,b);
    	printf("%d",((a/gcd)+(b/gcd)-1)*gcd);
    	return 0;
    }
    
  • 相关阅读:
    mysql 索引
    redis持久化
    redis发布订阅
    django 信号
    paramiko模块
    23种设计模式python实现
    几种浏览器存储数据的方式
    关于传参
    对字符串里的四则运算进行计算2020/10/12
    动手动脑2020/10/9
  • 原文地址:https://www.cnblogs.com/hello-tomorrow/p/11998076.html
Copyright © 2020-2023  润新知