题目
问题描述
大联欢的最后项目是小明和小李的射击比赛。比赛规则是这样的,每次两人同时射 击, 每个人有 S 枚子弹进行射击,第 1 秒两人同时打出第一枚子弹,以后的s-1 子弹可 以自己根据一定的间隔时间打出,设小明后面的子弹每隔 t1 秒打出一枚子弹,小李后 面的子弹每隔 t2 秒打出一枚子弹, 如 t1=2 时, 则小明子弹打出的时刻分别为 1,4,7,10,13 ,… ,同理可得小李子弹打出的时刻。如果某一时刻两人同时打出子弹, 则 只能听到一次响声, 你知道这两个人的比赛过程中我们共能听到几次枪声吗?
[输入格式]
输入数据共有三行.
第一行有一个正整数 S,它的范围[1..100000]。
第二行有一个正整数 t1,它的范围[1..10000]。
第三行有一个正整数 t2,它的范围[1..10000]。
[输出格式]
比赛过程中能听到几次枪声。
[输入样例]
5
2
3
[输出样例]
8
代码:
#include<bits/stdc++.h>
using namespace std;
long long s,t1,t2,a[100005],b[100005],x=1,y=1,t,q;
int main(){
cin>>s;
cin>>t1;
cin>>t2;
for(int i=1;i<=s;i++){
a[i]=x;
b[i]=y;
x=x+t1+1;
y=y+t2+1;
}
for(int i=1;i<=s;i++){
for(int j=1;j<=s;j++){
if(a[i]==b[j]){
a[i]=-1;
b[j]=-1;
}
}
}
for(int i=1;i<=s;i++)
if(a[i]==-1)q++;
for(int i=1;i<=s;i++)
if(b[i]==-1)q++;
s*=2;
s-=q;
q/=2;
cout<<s+q;
return 0;
}