第十屆藍橋杯C++省賽A組

試題 A: 平方和#(暴力)

本題總分:5 分

【問題描述】
小明對數位中含有 2、0、1、9 的數字很感興趣,在 1 到 40 中這樣的數包括 1、2、9、10 至 32、39 和 40,共 28 個,他們的和是 574,平方和是 14362。注意,平方和是指將每個數分別平方後求和。
請問,在 1 到 2019 中,所有這樣的數的平方和是多少?
【答案提交】
這是一道結果填空的題,你只需要算出結果後提交即可。本題的結果爲一 個整數,在提交答案時只填寫這個整數,填寫多餘的內容將無法得分。
提示:如果你編寫程序計算,發現結果是負的,請仔細檢查自己的程序, 不要懷疑考場的編程軟件。

2658417853

#include <iostream>
using namespace std;
#include<stdio.h>
#include<stdlib.h>
#include<cstring>
#include<math.h>
int is2019(int n)
{
    int t;
    while(n>0){//n==0時退出
        t=n%10;
        if(t==2||t==0||t==1||t==9)
            return 1;
        n=n/10;
    }
    return 0;
}
int main()
{
   long long m=0;
   for(int i=1;i<=2019;i++){
      if(is2019(i))
        m=m+i*i;
   }
   cout<<m;
   return 0;
}
//輸出
//2658417853

試題 B: 數列求值#(暴力)

本題總分:5 分

【問題描述】
給定數列 1, 1, 1, 3, 5, 9, 17, …,從第 4 項開始,每項都是前 3 項的和。求
第 20190324 項的最後 4 位數字。
【答案提交】
這是一道結果填空的題,你只需要算出結果後提交即可。本題的結果爲一個 4 位整數(提示:答案的千位不爲 0),在提交答案時只填寫這個整數,填寫多餘的內容將無法得分。

4659

#include <iostream>
using namespace std;
#include<stdio.h>
#include<stdlib.h>
#include<cstring>
#include<math.h>
int main()
{
   int m=0;
   int f1=1,f2=1,f3=1;
   for(int i=4;i<=20190324;i++){
      m=((f1+f2)%10000+f3)%10000;
      cout<<m<<endl;
      f1=f2;
      f2=f3;
      f3=m;
   }
   return 0;
}

短短十餘行代碼,居然整整運行了40分鐘。。。
並且還不是用遞歸寫的,遞歸運行不出來
在這裏插入圖片描述

試題 C: 最大降雨量#(構造)

本題總分:10 分

【問題描述】
由於沙之國長年乾旱,法師小明準備施展自己的一個神祕法術來求雨。
這個法術需要用到他手中的 49 張法術符,上面分別寫着 1 至 49 這 49 個
數字。法術一共持續 7 周,每天小明都要使用一張法術符,法術符不能重複使用。
每週,小明施展法術產生的能量爲這周 7 張法術符上數字的中位數。法術
施展完 7 周後,求雨將獲得成功,降雨量爲 7 周能量的中位數。
由於乾旱太久,小明希望這次求雨的降雨量儘可能大,請大最大值是多少?
【答案提交】
這是一道結果填空的題,你只需要算出結果後提交即可。本題的結果爲一 個整數,在提交答案時只填寫這個整數,填寫多餘的內容將無法得分。

34

證明:無法找到比34更優的方案了。如下圖,假設每週選的數已經排好序

第一週: x x x x x x x ( x1,x2,x3,x4,x5,x6 滿足 x1<x2<x3<x4<x5<x6)
第二週: x x x x x x x
第三週: x x x x x x x
第四周: x x x x x x x
第五週: x x x x x x x
第六週: x x x x x x x
第七週: x x x x x x x

則標記紅色的是每週的中位數:

第一週: x x x x x x x
第二週: x x x x x x x
第三週: x x x x x x x
第四周: x x x x x x x
第五週: x x x x x x x
第六週: x x x x x x x
第七週: x x x x x x x

此時不看第幾周,每一行裏:紅色的x右邊的x必然比x大。

假設上面的七行按行按照x由小到大重新排序後得到

x x x x1 x x x
x x x x2 x x x
x x x x3 x x x
x x x x4 x x x
x x x x5 x x x
x x x x6 x x x
x x x x7 x x x

則x1<x2<x3<x4<x5<x6<x7 題目要求的中位數的中位數就是x4了

問題是x4最大能取到多少呢?注意到上圖中x4右下角(如下圖)的元素都應比x4大。。(共15個)

因此答案爲49-15=34

x x x x x x x
x x x x x x x
x x x x x x x
x x x x4 x x x
x x x x x x x
x x x x x x x
x x x x x x x

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章