正整数序列

正整数序列
UVa 11384
【输入格式】

输入包含多组数据。每组仅一行,为正整数n(n<=109).输入结束标志位文件结束符EOF;

【输出格式】

对于多组数据,输出最少操作次数。
//题目中说n<=109证明用O(N)的算法可能会超时

//正整数序列
#include
using namespace std;
int main()
{
	int n;
	while(scanf("%d",&n)==1)
	{
		int ans=0;
		while(n>0)
		{
			n/=2;
			ans++;
		}
		printf("%d",ans);
	}
	return 0;
}

解法二:

#include
using namespace std;
int f(int n)
{
	return n==1?1:f(n/2)+1;
}

int main()
{		
	int n;
	scanf("%d",&n);
	prinf("%d",f(n));
	return 0;
}

如下图一个n=6的整数列砍了一刀后就变成了图二,而图二就等价于对3再处理可得如下公式
f(6)=f(3)+1;
出口为f(1)=1;
正整数序列_第1张图片

你可能感兴趣的:(正整数序列)