鼓掌时长问题

题目描述

运动会上,两个班级在为场上的运动员鼓掌加油。其中A班的同学每x秒钟鼓掌一次,B班的同学每y秒钟鼓掌一次,每次鼓掌都持续1秒钟。这样的话,在n秒钟之内,共有多少秒的时间有掌声?
x=2,y=3,n=10的情况如下:

输入

一行,三个正整数 x,y,n。 

输出

一行,一个整数,表示有掌声的时间总长度。 

样例输入 Copy
2 3 10
样例输出 Copy
7
提示

对于 50%的数据:0<x,y<25000,n<=1000000; 
对于 100%的数据:0<x,y<40000,n<=1000000000。 

这道题暴力枚举肯定超时,所以用a+b减去a,b的最小公倍数,就是鼓掌时长啦。

#include<bits/stdc++.h>
using namespace std;
int gcd(int a,int b)
{
	if(a%b==0)
	return b;
	return gcd(b,a%b);
}
int main()
{
	int n,a,b,x,y,z;
	cin>>a>>b>>n;
	x=n/a;
	y=n/b;
	z=n/(a/gcd(a,b)*b);
	cout<<x+y-z;
	return 0;
}

gcd是最大公因数函数,也可以用直接__gcd(a,b)做。

谢谢大家观看。

点个赞吧!

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值