题解 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;
}
posted @ 2020-04-10 08:44  ahawzlc  阅读(93)  评论(0编辑  收藏  举报