P9213 [入门赛 #11] 移植柳树 (Hard Version) 题解
likono
·
·
题解
P9213 [入门赛 #11] 移植柳树 (Hard Version) 题解
1.分析题目\
题目说有n棵柳树,每两棵之间间隔x米。求把每两棵之间间隔y米,最少不用挪动多少棵柳树。\
2.分析解题思路\
观察题图
我们发现题目中不用动的柳树每隔6米出现一个,而6又等于2和3的最小公倍数。\
关于最小公倍数,从C++17开始就有自带的函数:lcm(x,y)\
只需要用总棵树$÷2$行啦!\
**$$3.$$代码实现**\
```cpp
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define ull unsigned ll
#define me(a,x) memset(a,x,sizeof(a))
#define f(i,a,b,c) for(int i=a;i<=b;i+=c
#define rf(i,a,b,c) for(int i=a;i<b;i+=c)
#define F(i,a,b,c) for(int i=a;i>=b;i-=c)
#define RF(i,a,b,c) for(int i=a;i>b;i-=c)
const int maxn=1<<17;//131072,<<20 1048576,
#define vi vector<int>
#define sf scanf
#define pf printf
//上面为个人习惯,不用管
int t;
signed main(){
sf("%lld",&t);//输入组数
while(t--){//循环组数
int n,x,y;
sf("%lld%lld%lld",&n,&x,&y);//输入变量
pf("%lld\n",n/(lcm(x,y)/x)+1);//输出答案
}
return 0;
}
```
[1000分AC记录^_^](https://www.luogu.com.cn/record/235998286)