嵊州D3T1
山魔
有n 座山,每座山有南北两面。
每一天,一些山的某一面(不一定相同) 会受到山魔的袭击。
但是山魔一天最多只会袭击k座山。
当每座山的每一面都被袭击过后,山魔就会离开。
那么至少要经过多少天,山魔会消失?
Input
一行两个正整数n, k。
Output
一个整数,表示答案。
Examples
devil.in | devil.out |
3 2 | 3 |
Notes
对于所有数据,满足1 ≤ n, k ≤ 10。
Task1[10%]
k = 1
Task2[50%]
k ≤ 4
Task3[100%]
无特殊限制
Sovle!
这道题,又是改编的题目
原型是烙饼问题:
有n个饼,k个锅,一次只能烤一面
问:至少要烤几次?
小学奥数嘛。。。
Solve!
首先就是特判:
当锅比饼都要多时,肯定只用烤两次嘛(正面一次反面一次)
锅饼相同时,也是这样的
所以:
if(n<=k) {
cout<<"2";
return 0;
}
再看看正常情况:
随便选了几个数算了下
发现了普遍规律:
如果n的两倍可以被k整除
就直接输出商加一
如果不能被整除
就输出商(int向下取整)
#include<cstdio> using namespace std; int main() { freopen("devil.in", "r", stdin); freopen("devil.out", "w", stdout); int n, k; scanf("%d%d", &n, &k); if (k>=n) puts("2"); else if (2*n%k) printf("%d ", 2 * n / k + 1); else printf("%d ", 2 * n / k); return 0; }
OK!