【问题描述】
一头大象决定去看朋友,大象住在直线坐标0的位置,而它的朋友则住在直线坐标x(1≤|x|≤106)的位置,大象每走一步可以跨越1、3、5、...、2m-1中的任何一个数字位置,其中1≤m≤106,那么大象到达朋友处最少需要走多少步?
【输入形式】
输入为一行两个整数x、m,x表示大象朋友所住的位置,m为一个整数。
【输出形式】
输出为一个整数,表示大象到达朋友处最少需要的步数。
【样例输入1】
5 3
【样例输出1】
1
【样例输入2】
12 3
【样例输出2】
4
#include<iostream>
using namespace std;
int main()
{
int x,m,bushu;
cin>>x>>m;
if(x<0) x=-x; //将负数全变为正数再计算
if(x<=(2*m-1)) //当距离小于最大步伐
{
if(x%2==0) bushu=2; //距离为偶数,步数为2
else bushu=1; //距离为奇数,步数为1
}
else //距离大于最大步伐
{
bushu=x/(2*m-1); //先最大步伐走至距离小于最大步伐
x=x%(2*m-1); //取余(小于最大步伐的距离)
if(x==0) bushu=bushu; //为0时,已走到
else
{
if(x%2==0) bushu=bushu+2; //为偶数,再走2步
else bushu=bushu+1; //为奇数,再走1步
}
}
cout<<bushu;
return 0;
}