1. 程式人生 > >第五屆藍橋杯總結

第五屆藍橋杯總結

amp 說明文 tro ... 註意 家裏 例如 多少 ....

第一題 啤酒和飲料

啤酒每罐2.3元,飲料每罐1.9元。小明買了若幹啤酒和飲料,一共花了82.3元。

我們還知道他買的啤酒比飲料的數量少,請你計算他買了幾罐啤酒。

註意:答案是一個整數。請通過瀏覽器提交答案。

不要書寫任何多余的內容(例如:寫了飲料的數量,添加說明文字等)。
#include <iostream>
using namespace std;

int main()
{
    for (int i = 0; i <= 41; i++)
    {
        for (int j = i + 1; j <= 80
; j++) { double ans = 2.3*i + 1.9*j; if (ans == 82.3) { cout << i << " " << j << " " << ans << endl; break; } } } return 0; }

答案:11

第二題:切面條

 一根高筋拉面,中間切一刀,可以得到2根面條。

    如果先對折1次,中間切一刀,可以得到3根面條。

    如果連續對折2次,中間切一刀,可以得到5根面條。

    那麽,連續對折10次,中間切一刀,會得到多少面條呢?

答案是個整數,請通過瀏覽器提交答案。不要填寫任何多余的內容。

題解:找規律

#include <iostream>
using namespace std;

void solve()
{
    int s = 2;
    
    int ans = s;
    int N;
    cin >> N;
    // 0 : 2
    // 1 : 2*2 - 1 = 3
    // 2 : 2*3 - 1 = 5  
    for (int i = 1; i <= N; i++)
    {
        ans = s * 2 - 1;
        s = ans;
    }
    cout 
<< ans << endl; } int main() { solve(); return 0; }

第三題:李白打酒

話說大詩人李白,一生好飲。幸好他從不開車。

    一天,他提著酒壺,從家裏出來,酒壺中有酒2鬥。他邊走邊唱:

    無事街上走,提壺去打酒。
    逢店加一倍,遇花喝一鬥。

    這一路上,他一共遇到店5次,遇到花10次,已知最後一次遇到的是花,他正好把酒喝光了。 


    請你計算李白遇到店和花的次序,可以把遇店記為a,遇花記為b。則:babaabbabbabbbb 就是合理的次序。

像這樣的答案一共有多少呢?請你計算出所有可能方案的個數(包含題目給出的)。

題解:遞歸.....一定要註意遞歸結束條件.........店為0,花為0,酒為0,且!最後一個遇到的應該是花,也就是 b。遞歸的時候也要判斷條件。

#include <iostream>
#include <string>
using namespace std;

int ans; 
int N = 2;

void dfs(int dian, int hua, string s, int n)
{
    if (!n && !hua && !dian && s[14] == b)
    {
        cout << s << endl;
        ans++;
        return;
    }
    
    if (dian > 0) {
        dfs(dian - 1, hua, s+"a", n*2);
    }
    
    if (hua > 0 && n > 0) {
        dfs(dian, hua - 1, s+"b", n-1);    
    }
    
}

void solve()
{
    dfs(5, 10, "", N);
    cout << ans << endl; 
}

int main()
{
    solve();
    
    return 0;
}

答案:14

第五屆藍橋杯總結