有 n 个硬币,一开始全部正面朝上,每次可以翻转 k 个硬币( k 小于 n ),那么至少要 p 次翻转,才能让所有硬币反面朝上,求 p 的值。如果不能成功翻转则输出-1
Input
输入2个数:n,k (1 <= n <= 10^9, 1 <= k <= 10^9)。
Output
输出翻转次数的最小值。 如果不能成功翻转则输出-1
Input示例
6 5
Output示例
6
#include<stdio.h>
#include<math.h>
int main()
{
int n, k, p;
scanf("%d %d", &n, &k);
if(n % 2)
{
if(k % 2 == 0)
{
printf("-1\n");
}
else
{
p = ceil(n * 1./ k);
if (p % 2 == 0)
{
p++;
}
printf("%d\n", p);
}
}
else
{
if (n/ 2 < k && k < n - 1 && k% 2 == 0)
{
printf("3\n");
}
else if (n/ 2 < k && k <= n - 1 && k% 2)
{
p = ceil(n * 1./(n - k));
if (p % 2)
{
p++;
}
printf("%d\n", p);
}
else if (k <= n/ 2 && k% 2 == 0)
{
p = ceil(n * 1./ k);
printf("%d\n", p);
}
else
{
p = ceil(n * 1./ k);
if (p% 2)
{
p++;
}
printf("%d\n", p);
}
}
return 0;
}