Gym

(Gym.cpp/c/pas)

题目描述 Description

木吉终于到达了 VAN 様的老巢 gym,然而他已经是孤身一人。他决定和 VAN 様来一场对决。他决定和 VAN 様玩♂跑♂步。已知跑道长\(l\)米,而木吉一步能跑且只能跑\(n\)米,VAN様一步能跑且只能跑\(m\)米。现在规定选手不能跑出\(k\)米。而谁最后跑得远谁就赢了。出于公平起见,\(k\)是一个$1 \(到\)l$之间完全随机的正整数。现在木吉想要知道,自己和 VAN 様打成平局的概率是多少。

输入描述 (gym.in) Input Description

第一行为三个整数,依次为\(l,n,m\);

输出描述 (gym.out) Output Description

一个约分后的真分数,格式为a/b,为木吉和 VAN 様打成平局的概率

样例输入 Sample Input

10 3 2

样例输出 Sample Output

3/10

样例解释 Sample Interpretation

当$ k $为$1,6,7 $时,木吉会和 VAN 様打成平局

数据范围 Data Size

对于 30%的数据,\(n,m,l\le 10^6\)

对于 100%的数据,\(n,m,l\le 5\times {10}^{18}\)

题解

首先确定这是一道数论题,于是就往此方向想。

显然,木吉和 VAN 様打成平局的充要条件是:\(k\mod n=k\mod m\)。

不难发现,当\(n=m\)时,\(k\)显然成立。而上式会报错,于是需要特判一下:

if(n==m)
{
fout<<"1/1";
return 0;
}

然后继续开始愉快的推导……

将上式中\(k\)转化为带余除式,有\(k-t_1 n=k-t_2 m\),\(t_1 n=t_2 m\)。

设满足木吉和 VAN打成平局的\(k\)的总数为\(ans\)。

不难发现,当\(k=\infty\)时,木吉和 VAN首次相遇是在\([a,b]\)处。于是,当\(k<[a,b]\)时,\(ans=\min(m,n)\)(两个人都没有跨出一步)。

按照这个思路,我们发现两人在\([a,b]\)处与在起点处是等价的。于是我们就不难推出正解。

毒瘤的是\([a,b]\)unsigned long long竟存不下……于是在必要情况下必须用long double

代码

#include <fstream>
#include <algorithm> using namespace std; typedef long long LL; LL l,n,m; int main()
{
ifstream fin("gym.in");
ofstream fout("gym.out");
fin>>l>>n>>m;
if(n==m)
{
fout<<"1/1";
fin.close();
fout.close();
return 0;
}
LL t=min(n,m);
LL ans=t-1;
if(ans>l)
{
fout<<"1/1";
fin.close();
fout.close();
return 0;
}
LL g=__gcd(m,n);
LL lcm=m/g*n;
if((long double)m/g*n<=(long double)l)
ans+=l/lcm*t;
LL tmp=__gcd(ans,l);
fout<<ans/tmp<<'/'<<l/tmp;
fin.close();
fout.close();
return 0;
}

20180418模拟赛T2——Gym的更多相关文章

  1. 模拟赛T2 交换 解题报告

    模拟赛T2 交换 解题报告 题目大意: 给定一个序列和若干个区间,每次从区间中选择两个数修改使字典序最小. \(n,m\) 同阶 \(10^6\) 2.1 算法 1 按照题意模拟,枚举交换位置并比较. ...

  2. 20161003 NOIP 模拟赛 T2 解题报告

    Weed duyege的电脑上面已经长草了,经过辨认上面有金坷垃的痕迹. 为了查出真相,duyege 准备修好电脑之后再进行一次金坷垃的模拟实验. 电脑上面有若干层金坷垃,每次只能在上面撒上一层高度为 ...

  3. NOIP欢乐模拟赛 T2 解题报告

    小澳的坐标系 (coordinate.cpp/c/pas) [题目描述] 小澳者表也,数学者景也,表动则景随矣. 小澳不喜欢数学,可数学却待小澳如初恋,小澳睡觉的时候也不放过. 小澳的梦境中出现了一个 ...

  4. 20180530模拟赛T2——绀碧之棺

    题目背景 qiancl 得到了一张藏宝图,上面写了一道谜题. 题目描述 定义\(F(n)\)为 n 在十进制下各个数位的平方和,求区间\([a,b]\)中有多少\(n\)满足\(k\times F(n ...

  5. 20180519模拟赛T2——pretty

    [问题描述] 小美今天对于数列很有兴趣.小美打算找出一些漂亮的序列.一个漂亮的序列的限制如下: 长度为 n ,而且数列里只包含 [1,n] 的整数. 要不是不降的序列就是不升的序列. 小美想知道有多少 ...

  6. 2019.11.11 模拟赛 T2 乘积求和

    昨天 ych 的膜你赛,这道题我 O ( n4 ) 暴力拿了 60 pts. 这道题的做法还挺妙的,我搞了将近一天呢qwq 题解 60 pts 根据题目给出的式子,四层 for 循环暴力枚举统计答案即 ...

  7. 5.12 省选模拟赛 T2 贪心 dp 搜索 差分

    LINK:T2 这题感觉很套路 但是不会写. 区间操作 显然直接使用dp不太行 直接爆搜也不太行复杂度太高. 容易想到差分 由于使得整个序列都为0 那么第一个数也要i差分前一个数 强行加一个0 然后 ...

  8. 20161023 NOIP 模拟赛 T2 解题报告

    Task 2.回文串计数 (calc.pas/calc.c/calc.cpp) [题目描述] 虽然是一名理科生,Mcx常常声称自己是一名真正的文科生.不知为何,他对于背诵总有一种莫名的热爱,这也促使他 ...

  9. 20161005 NOIP 模拟赛 T2 解题报告

    beautiful 2.1 题目描述 一个长度为 n 的序列,对于每个位置 i 的数 ai 都有一个优美值,其定义是:找到序列中最 长的一段 [l, r],满足 l ≤ i ≤ r,且 [l, r] ...

随机推荐

  1. 《Linux就该这么学》培训笔记_ch23_使用OpenLDAP部署目录服务

    <Linux就该这么学>培训笔记_ch23_使用OpenLDAP部署目录服务 文章主要内容: 了解目录服务 目录服务实验 配置LDAP服务端 配置LDAP客户端 了解目录服务 其实目录可以 ...

  2. Selenium基础教程(二)环境搭建

    一.环境搭建 (1)初学者最佳环境: Python 2.7 + Selenium 2+ Firefox 46 (2)喜欢尝新的环境: Python 3.6 + Selenium 3+ Firefox ...

  3. 用Powershell强制同步Windows主机与Internet time server的时间

    第一步,判断Windows Time服务是否正在运行,如果没有,则开启它. 第二步,强制同步,不知为何,往往第一次会失败,那么就多运行几次好了. Get-Service w32time | Where ...

  4. mybatis-plus-generator 模板生成代码

    maven: <dependencies> <dependency> <groupId>com.baomidou</groupId> <artif ...

  5. 【题解】Luogu P5319 [BJOI2019]奥术神杖

    原题传送门 题目让我们最大化\(val=\sqrt[k]{\prod_{i=1}^k w_i}\),其中\(k\)是咒语的个数,\(w_i\)是第\(i\)个咒语的神力 看着根号和累乘不爽,我们两边同 ...

  6. mysql给某个用户单个表权限

    CREATE USER systemselect IDENTIFIED BY 'Zbank123456';#只给查询权限 GRANT SELECT ON szkitil.zbank_businesss ...

  7. 使用ASP.NET Core MVC应用程序中的ResponseCache属性处理缓存(转载)

    HTTP响应的缓存意味着当发出HTTP请求时,服务器生成的响应由浏览器或服务器存储在某个地方,以便在对同一资源的连续HTTP请求中重复使用.实质上,我们正在存储生成的响应,并将该响应重用于后续请求一段 ...

  8. 通过Ldap实现人事系统组织人事和AD的同步

    项目需求:同步人事系统的组织架构-对应AD的OU树同步人事系统的员工-对应AD的用户 创建OU 名字不能重复,需要父级路径(parentOrganizeUnit)以及新ou的名字(name),如果最父 ...

  9. Geany——Python配置

    Geany是一个很不错的编辑器,操作很简单,这里记录一下Geany的入手设置(在下是一个Python程序猿,就以Python为例): 1:新建:选择 下拉菜单中的  main.py  ,然后就能生成P ...

  10. witchcase

    #include "stdafx.h" #include using namespace std; int _tmain(int argc, _TCHAR* argv[]) { i ...