UVA 10627 - Infinite Race

option=com_onlinejudge&Itemid=8&page=show_problem&category=516&problem=1568&mosmsg=Submission+received+with+ID+13837674" target="_blank" style="">题目链接

题意:一段跑道,A,B分别在两端,速度为u。v,两个人跑到还有一端立即回头,回头时间不计,问经过单位时间t。两人相遇几次

思路:追及相遇问题。这样计算:

1、迎面相遇次数:第N次迎面相遇,路程和 = 全程*(2N-1)

ans+=((u+v)t+l)/(2l)

2、追及相遇次数:第N次追上相遇,路程差 = 全程*(2N-1)

ans+=((uv)t+l)/(2l)

3、比較麻烦的是要扣掉边界位置迎面和追及反复的次数

设r为两人到同一端点的最少时间。因此1、t=(2k+1)r

2、ur=k1l
3、vr=k2l

rl/vl/u的整数倍,既rl/gcd(u,v)的整数倍

2式子变形,得到u/gcd(u,v)∗r/(l/gcd(u,v))=k1

因此r取最小的正数解, 得到r=l/gcd(u,v)

1式变形,得到k=(tr)/(2r),将r带回得到k=(tgcd(u,v)+l)/(2l)

可是这样还不算完。因为ur和vr必须差一个奇数个的l。将r带入。得到

(l/gcd(u,v)−l/gcd(u,v))必须为奇数才有反复的情况出现,须要推断

所以最后反复情况为:

if ((u - v) / gcd(u, v) % 2)

ans -= (gcd(u, v) * t + l) / (2 * l)

代码:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <algorithm>
using namespace std; long long l, u, v, t; long long gcd(long long a, long long b) {
if (!b) return a;
return gcd(b, a % b);
} int main() {
while (~scanf("%lld%lld%lld%lld", &l, &u, &v, &t) && l) {
if (u == 0 && v == 0) {
printf("0\n");
continue;
}
if (u < v) swap(u, v);
long long ans = 0;
ans += ((u + v) * t + l) / (2 * l);
ans += ((u - v) * t + l) / (2 * l);
long long d = gcd(u, v);
if ((u - v) / d % 2)
ans -= (d * t + l) / (2 * l);
printf("%lld\n", ans);
}
return 0;
}

UVA 10627 - Infinite Race(数论)的更多相关文章

  1. uva 10555 - Dead Fraction)(数论)

    option=com_onlinejudge&Itemid=8&category=516&page=show_problem&problem=1496" st ...

  2. uva 10560 - Minimum Weight(数论)

    题目连接:uva 10560 - Minimum Weight 题目大意:给出n,问说至少须要多少个不同重量的砝码才干称量1~n德重量,给出所选的砝码重量,而且给出k,表示有k个重量须要用上述所选的砝 ...

  3. UVA 11754 - Code Feat(数论)

    UVA 11754 - Code Feat 题目链接 题意:给定一个c个x, y1,y2,y3..yk形式,前s小的答案满足s % x在集合y1, y2, y3 ... yk中 思路:LRJ大白例题, ...

  4. UVA 718 - Skyscraper Floors(数论)

    UVA 718 - Skyscraper Floors 题目链接 题意:在一个f层高的楼上,有e个电梯,每一个电梯有x,y表示y + k * x层都能够到,如今要问从a层是否能到达b层(中间怎么换乘电 ...

  5. uva 10692 - Huge Mods(数论)

    题目链接:uva 10692 - Huge Mods 题目大意:给出一个数的次方形式,就它模掉M的值. 解题思路:依据剩余系的性质,最后一定是行成周期的,所以就有ab=abmod(phi[M])+ph ...

  6. UVA 12009 - Avaricious Maryanna(数论)

    UVA 12009 - Avaricious Maryanna 题目链接 题意:给定一个n.求出n个数位组成的数字x,x^2的前面|x|位为x 思路:自己先暴力打了前几组数据,发现除了1中有0和1以外 ...

  7. uva 11728 - Alternate Task(数论)

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/u011328934/article/details/36409469 option=com_onli ...

  8. UVa 1393 - Highways(数论)

    链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  9. uva 11105 - Semi-prime H-numbers(数论)

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/u011328934/article/details/36644069 option=com_onli ...

随机推荐

  1. php练习——打印半金字塔、金字塔、空心金字塔、菱形、空心菱形

    半金字塔 金字塔 空心金字塔 菱形     空心菱形

  2. Dalvik虚拟机进程和线程的创建过程分析

    从前面Dalvik虚拟机的运行过程分析一文可以知道,Dalvik虚拟机除了可以执行Java代码之外,还可以执行Native代码,也就是C/C++函数. 这些C/C++函数在执行的过程中,又可以通过本地 ...

  3. string与char* 互相转换以及周边问题

    先插一个小知识点 string str = "abc" str += 'd'; cout<<str<<endl;  //"abcd"   ...

  4. 小记,取GB2312汉字的首字母【转】

    /// <summary> /// PY 的摘要说明. /// </summary> public class PY { // Fields private string m_ ...

  5. java环境变量设置方法

    1.安装JDK,安装过程中可以自定义安装目录等信息,例如我们选择安装目录为D:\java\jdk1.5.0_08:    2.安装完成后,右击“我的电脑”,点击“属性”:         3.选择“高 ...

  6. BZOJ 3122 随机数生成器

    http://www.lydsy.com/JudgeOnline/problem.php?id=3122 题意:给出p,a,b,x1,t 已知xn=a*xn-1+b%p,求最小的n令xn=t 首先,若 ...

  7. bzoj1071

    朴素的做法显然是O(n3)的考虑优化,我们将约束条件变形为A*h+B*v<=A*minh+B*minv+c右边是一个定值,当右边确定了minh之后,随着minv的增大,原来满足条件的且v> ...

  8. Extjs4开发中的一些问题

    1.  子frame刷新的问题 一般在jsp里面,要实现界面跳转,有很多方法,最典型的就是window.location.href="href",但是在嵌套有iframe框架的页面 ...

  9. 程序员欢呼:微软Bing开始支持搜索源码、可直接运行!

    日常生活中,程序员们经常会遇见这样那样的问题,比如忘记了代码该怎么写,又或者需要实现一些特殊的算法和功能.这时候,你就可以去找微软 Bing 帮忙啦! 微软最近联合 HackerRank 一起研发了一 ...

  10. Aix项目_shell_rsh_01

    rsh(remote shell) 功能说明:远端登入Shell. 语 法:rsh [-dn][-l <用户名称>][主机名称或IP地址][执行指令] 补充说明:rsh提供用户环境,也就是 ...