Huatuo's Medicine (HDU - 5551 )
Huatuo was a famous doctor. He use identical bottles to carry the medicine. There are different types of medicine. Huatuo put medicines into the bottles and chain these bottles together.
However, there was a critical problem. When Huatuo arrived the patient's home, he took the chain out of his bag, and he could not recognize which bottle contains which type of medicine, but he remembers the order of the bottles on the chain.
Huatuo has his own solution to resolve this problem. When he need to bring 2 types of medicines, E.g. A and B, he will put A into one bottle and put B into two bottles. Then he will chain the bottles in the order of ′−B−A−B−′. In this way, when he arrived the patient's home, he knew that the bottle in the middle is medicine A and the bottle on two sides are medicine B.
Now you need to help Huatuo to work out what's the minimal number of bottles needed if he want to bring N types of medicine.
Input
The first line of the input gives the number of test cases, T(1≤T≤100). T lines follow. Each line consist of one integer N(1≤N≤100), the number of types of the medicine.
Output
For each test case, output one line containing Case #x: y, where x is the test case number (starting from 1) and y is the minimal number of bottles Huatuo needed.
Sample Input
1
2
Sample Output
Case #1: 3
题目翻译:
华佗是一位著名的医生。他用同样的瓶子装药。有不同种类的药物。华佗把药放在瓶子里,把这些瓶子串在一起。
然而,有一个关键的问题。当华佗来到病人家中,他从包里拿出链子,他不知道哪个瓶子里装的是哪种药,但他记得链子上瓶子的顺序。
华佗有自己的办法来解决这个问题。当他需要带两种药物时,例如A和B,他会把A放入一个瓶子,然后把B放入两个瓶子。然后他将把瓶子按“- B - A - B -”的顺序锁起来。这样,当他到达病人的家,他知道中间的瓶子是药A,两边的瓶子是药B。
现在你需要帮助华佗算出,如果他要带N种药,最少需要多少瓶。
输入
输入的第一行给出测试用例的数量,T(1≤T≤100)。T线。每一行由一个整数N(1≤N≤100)组成,表示药品的种类数。
输出
对于每个测试用例,输出一行包含用例#x: y,其中x是测试用例号(从1开始),y是所需要的瓶数最少的瓶数。
样例输入
1
2
样例输出
例# 1:3
思路:2*n-1,很简单
AC代码:
#include <stdio.h>
#include <algorithm>
#include <string.h>
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
int t,n;
int k=0;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
printf("Case #%d: %d\n",k+=1,2*n-1);
}
return 0;
}