P9213 [入门赛 #11] 移植柳树 (Hard Version) 题解

· · 题解

P9213 [入门赛 #11] 移植柳树 (Hard Version) 题解

1.分析题目\ 题目说有n棵柳树,每两棵之间间隔x米。求把每两棵之间间隔y米,最少不用挪动多少棵柳树。\ 2.分析解题思路\ 观察题图 我们发现题目中不用动的柳树每隔6米出现一个,而6又等于23的最小公倍数。\ 关于最小公倍数,从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)