UESTC - 1264:人民币的构造【规律】



人民币的构造
Time Limit: 1000MS   Memory Limit: 65535KB   64bit IO Format: %lld & %llu

Submit Status

Description

我们都知道人民币的面值是 ,为什么是这个数值呢,我们分析了下发现,从 的每个数字都可以由每种面值选出至多一张通过加法和减法(找钱)来构成,(比如:

但是实际上,我们只需要 三种面值就可以组成 的每一个数字了

那么现在问题来了,给一个数 ,请问最少需要多少种不同的面值就可以构成从 的所有数字,注意在构成每一个数字时同种面值不能超过 张。

Input

一个数字 (1<= <=100000)

Output

一个数字,代表最少需要多少种不同的面值可以构成从 的所有数字。

Sample Input

10

Sample Output

3

Hint

Source

第七届ACM趣味程序设计竞赛第三场(正式赛)

AC-code:
#include<cstdio>
int main()
{
	int n,va,temp,ans;
	scanf("%d",&n);
	va=0;
	temp=0;
	ans=0;
	while(va<n)
	{
		temp=2*va+1;
		va+=temp;
		ans++;
	}
	printf("%d\n",ans);
	return 0;
 } 


你可能感兴趣的:(思维,规律)