UVA12992 【Huatuo's Medicine】

题目大意:

华佗什么鬼去病人家看病时会把所有药装在瓶子里串成一条链,但他不知道哪个瓶子里装哪种药,他只记得链上瓶子的顺序,所以他这样解决:当他需要带两种药(A)(B)时,他会把瓶子串成(-B-A-B)这样中间为(A)药,两边为(B)药。

问华佗带(n)种药最少需要多少瓶子。

题目比较简单,理解装药的顺序就好。

个人认为,可能理解错的情况为:

(-B-A-B-D-C-D-……)

实际上,很显然这样是错的,因为他不知道哪个瓶子放哪种药。

所以应该这样放:

(-D-C-B-A-B-C-D-……)

这样放中间的药就确定了,又因为他记得顺序,所以哪个瓶子装哪种药也就确定了。

那么中间的药放一个瓶子,剩下要都要放两个瓶子,所以

(ans = (n - 1) *2+1 = n*2-1)

代码:

#include <iostream>

using namespace std;

int main()
{
    int T, n;
    cin >> T;
    for (int i = 1; i <= T; i++) {
        cin >> n;
        cout << "Case #" << i <<":" << ' ' << n * 2 - 1 << '
';
    }
} 

完结撒花∩( ・ω・)∩

原文地址:https://www.cnblogs.com/Hydrogen-Helium/p/11738060.html