您的位置:首页 > 其它

最少步数

2015-11-23 19:21 183 查看

最少步数


Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^

题目描述

给定一个数字n,我们可以进行3种操作,加1,减1,如果可以整除2,还可以除2,问最少多少步变换到1.

输入

输入数据的第一行包含数字n(1<=n<=10000000)。多组输入。

输出

计算结果。

示例输入

3


示例输出

2


提示

来源

cz

示例程序

#include<stdio.h>
int d[10000001];
int set(int n)
{
if(n==1)
{
d
=0;
return d
;
}
if(n==2)
{
d
=1;
return d
;
}
else
{
if(n%2==0)
d
=set(n/2)+1;
else
d
=set(n-1)>set(n+1)?set(n+1)+1:set(n-1)+1;
return d
;
}
}
int main()
{
int i,j,n,m,k,t;
while(scanf("%d",&n)!=EOF)
{
k=set(n);
printf("%d\n",k);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: