• 2017北京网络赛 Bounce GCD加找规律


    题目链接:http://hihocoder.com/problemset/problem/1584

    题意:就是求一个小球从矩阵的左上角,跑到矩形的右下角不能重复经过的格子,小球碰到墙壁就反射。

    解法:规律题。先算出来小球一共会经过多少网格(包括重复的在内),再算出来有多少个网格过不止一次,两者相减就可以了。对于n*m的矩形,经过观察可以得到,小球弹跳中经过的网格总数是(n-1)*(m-1)/gcd(n-1,m-1)+1,对于9*15的矩形来说就是57。然后来考虑答案39和57的差值,18。对于18有3*6的组合方式,那么对于3可以(9-1)/gcd(9-1,16-1)-1,对于6可以(15-1)/gcd(9-1,15-1)-1.难道是这样凑出来的???套上去发现恰好可以过样例。。然后就没有然后了。

    #include <bits/stdc++.h>
    using namespace std;
    typedef long long LL;
    int main(){
        LL n,m;
        while(~scanf("%lld%lld",&n,&m)){
            LL ans = (n-1)/__gcd(n-1,m-1)*(m-1)-((n-1)/__gcd(n-1,m-1)-1)*((m-1)/__gcd(n-1,m-1)-1)+1;
            printf("%lld
    ", ans);
        }
        return 0;
    }
    

    对于(n1)×(m1)gcd((n1),(m1))+1

  • 相关阅读:
    编码问题
    Linux环境给文件重命名
    FIFO简记
    图像去模糊
    matlab直方图均衡,使用向量优化
    研究方向
    FPGA学习笔记之格雷码、边沿检测、门控时钟
    [转]关于凸优化的一些简单概念
    SSD果然劲爆!
    Qunie问题
  • 原文地址:https://www.cnblogs.com/spfa/p/7586495.html
Copyright © 2020-2023  润新知