hihocoder #1584 : Bounce
2024-08-24 19:35:56
题意;
有一个n*m的网格阵,球从左上角开始在网格中碰撞,碰到边界就直角反弹,到达格子的角落结束,求途中经过一次的格子数。
代码:
//神马规律啊,设x表示球与垂直面的撞击次数,y为球与水平墙面的撞击次数,那么球走过的总的格子数就是x*(m-1)+m==
//y*(n-1)+n,规律发现,经过两次的格子数是x*y,那么如何求x,y呢,x=(n-1)/gcd(n-1,m-1)-1,y=(m-1)/gcd(n-1,m-1)-1;
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
typedef long long ll;
int gcd(ll x,ll y) { return x==?y:gcd(y%x,x); }
int main()
{
ll n,m;
while(scanf("%lld%lld",&n,&m)==){
ll x=n-,y=m-;
ll g=gcd(x,y);
x/=g;y/=g;
x--;y--;
printf("%lld\n",x*(m-)+m-x*y);
}
return ;
}
最新文章
- ES性能测试
- XenServer安全重启xapi的方法
- 10天学会phpWeChat——第六天:实现新闻的后台管理
- MyISAM与InnoDB两者之间怎么选择
- proj01总结:spring jdbc操作
- Codeforces Gym 100015A Another Rock-Paper-Scissors Problem 找规律
- linux svn authorization failed错误
- word在线编辑\生成图片(包含截图与合并)
- sql优化-hint的作用
- EC读书笔记系列之7:条款12 复制对象时勿忘其每一个成分
- python中打印文件名,行号,路径
- UrlRouting的理解
- AssemblyExecuteAdapter
- Linux内存描述之高端内存--Linux内存管理(五)
- maven的两种打包插件 ,防止 将无用文件打入META_INF,找不到主类的问题
- Python数据结构之实现队列
- Acegi框架
- oracle生成AWR报告方法
- Java的Properties类使用
- 如何在linux服务器上使用hanlp