牛客题目:晨跑

文章讲述了清华学生王队长、小钦和小针按照不同天数周期进行晨跑,他们在第0天相遇。为了找到下次三人同时晨跑的日期,即求三个周期的最小公倍数,文章提供了两种基于辗转相除法的C语言程序实现来计算这个公倍数。
摘要由CSDN通过智能技术生成

“无体育,不清华”、“每天锻炼一小时,健康工作五十年,幸福生活一辈子”

在清华,体育运动绝对是同学们生活中不可或缺的一部分。为了响应学校的号召,模范好学生王队长决定坚持晨跑。不过由于种种原因,每天都早起去跑步不太现实,所以王队长决定每a天晨跑一次。换句话说,假如王队长某天早起去跑了步,之后他会休息a-1天,然后第a天继续去晨跑,并以此类推。

王队长的好朋友小钦和小针深受王队长坚持锻炼的鼓舞,并决定自己也要坚持晨跑。为了适宜自己的情况,小钦决定每b天早起跑步一次,而小针决定每c天早起跑步一次。

某天早晨,王队长、小钦和小针在早起跑步时相遇了,他们非常激动、相互鼓励,共同完成了一次完美的晨跑。为了表述方便,我们把三位同学相遇的这天记为第0天。假设三位同学每次晨跑的时间段和路线都相同,他们想知道,下一次三人在跑步时相遇是第几天。由于三位同学都不会算,所以希望由聪明的你来告诉他们答案。

两种基于辗转相除法求最大公倍数和最小公约数的方法

一,

#include<stdio.h>

long long gcd(long long a, long long b)

{

return (b == 0) ? a : gcd(b, a % b); //使用迭代的方法不断刷新b和a直到a%b==0

}

int main()

{

long long a,b,c, t, x;

scanf("%lld %lld %lld", &a, &b, &c);

t = a * b / gcd(a, b);

x = t * c / gcd(t, c);

printf("%lld", x);

return 0;

}

二,

//求输入的三个数字的最小公倍数

#include<stdio.h>

int gcd(int a,int b)

{

int temp;

if(a>b){

while(a % b != 0 ){

temp = b;

b = a % b;

a = temp;

}

}

else {

temp = b;

b = a;

a = temp;

while(a % b != 0 ){

temp = b;

b = a % b;

a = temp;

}

}

return b;

}

int main()

{

int a,b,c;

int n;

int m;

scanf("%d %d %d",&a,&b,&c);

n = a * b / gcd(a,b);

m = gcd(n,c);

printf("%d", n * c / m );

return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值