1997 - 果冻豆

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 32 MB

安卓4.1版本的代号叫果冻豆(Jelly Bean),当时发布的时候,小明就对这个果冻豆很好奇,因为他以前没有吃过果冻豆,于是他去买了一盒果冻豆,当他吃下第一颗果冻豆的时候,他爱上了果冻豆。
之后小明又买了好多果冻豆,小明把它们放到n个盒子里,在第i个盒子里有i个果冻豆(i=1,2,3,...,n)。小明每天选择一个整数x,再选择一些装着果冻豆的盒子,这些被选中的盒子每个盒子里的果冻豆数量至少为x,然后小明吃掉每个被选中的盒子里的x个果冻豆。小明想尽快吃完所有的果冻豆,越快越好,所以想请你计算一下小明最快需要几天可以吃完所有的果冻豆?

题目输入

输入包含多组测试数据。
输入的第一行是一个整数T,表示有T组测试数据。
每组输入一个正整数n,n的含义见题目描述,n在int范围内。

题目输出

对于每组输入,输出所要求的结果。

输入/输出样例

输入格式

4
1
2
3
4

输出格式

1
2
2
3

C语言解答

#include<stdio.h>
int main()
{
    int t,n,i;
	scanf("%d",&t);
	while(t--)
	{
		scanf("%d",&n);
		for(i=0;n;n>>=1,i++);
		printf("%d\n",i);
	}
    return 0;
}

C++解答

#include <stdio.h>

int main() {
	int t, n, k;
	scanf("%d", &t);
	while (t--) {
		scanf("%d", &n);
		k = 0;
		while (n) {
			k++;
			n /= 2;
		}
		printf("%d\n", k);
	}
	return 0;
}

Java解答

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int n = in.nextInt();
		for(int i=0;i<n;i++){
			int b = in.nextInt();
			System.out.println(ag(b));
		}
	}
	
	private static int ag(int a){
		if(a==1)return 1;
		return ag(a/2)+1;
	}

}