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

Posted Lsxxxxxxxxxxxxx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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\n", ans);
    }
    return 0;
}

 

对于(n?1)×(m?1)gcd((n?1),(m?1))+1

以上是关于2017北京网络赛 Bounce GCD加找规律的主要内容,如果未能解决你的问题,请参考以下文章

hihoCoder 1584 Bounce 数学规律 (ACM-ICPC国际大学生程序设计竞赛北京赛区(2017)网络赛)

hihocoder 1584 Bounce (数学 && 规律) ACM-ICPC北京赛区2017网络赛

2017ICPC北京赛区网络赛 Minimum(数学+线段树)

2017年icpc西安网络赛 Maximum Flow (找规律+数位dp)

2017ICPC北京赛区网络赛 Visiting Peking University(简单思维)

2017 ACM-ICPC 北京网络赛 Minimum 线段树