题解 CF476A 【Dreamoon and Stairs】
首先分析题:
上台阶一步可以 1 个或者 2 步。
所以要想到达顶端,当 n 为偶数时,最少用 \(\frac{n}{2}\)步(\(\{2,2,2,···,2,2\}\));当 n 为奇数时,最少用\(\frac{n}{2}+1\)步(\(\{2,2,2,···,2,1\}\))。最多当然就是 n 步(\(\{1,1,1,···,1,1\}\))。
接下来我们要做的,就是在这个范围内枚举,从小到大找出最小的能被 \(m\) 整除的那个步数 \(x\) 。找到就直接结束,找不到就输出-1
。
不愧是橙题
#include<bits/stdc++.h>
using namespace std;
int main() {
int n,m,x,ccf=0;//勿喷变量名
cin>>n>>m;
if(n&1) ccf=1;//等同于n%2==1
int mn=n/2+ccf,mx=n;
for(int i=mn;i<=mx;i++) {
if(i%m==0) {
cout<<i<<endl;
return 0;
}
}
puts("-1");//找不到就输出-1
return 0;
}
任何一个伟大的计划,都有一个微不足道的开始