2014藍橋杯決賽試題及答案

2021-07-11 22:37:31 字數 4697 閱讀 2736

a村的元宵節燈會上有一迷題:

請猜謎 * 請猜謎 = 請邊賞燈邊猜

小明想,一定是每個漢字代表乙個數字,不同的漢字代表不同的數字。

請你用計算機按小明的思路算一下,然後提交「請猜謎」三個字所代表的整數即可。

請嚴格按照格式,通過瀏覽器提交答案。

注意:只提交乙個3位的整數,不要寫其它附加內容,比如:說明性的文字。

答案:897

直接for加判斷就好

在對文字進行簡單加密的時候,可以選擇用乙個n位的二進位制數,對原文進行異或運算。

解密的方法就是再執行一次同樣的操作。

加密過程中n位二進位制數會迴圈使用。並且其長度也可能不是8的整數倍。

下面的**演示了如何實現該功能。

請仔細閱讀,填寫空缺的**(下劃線部分)。

注意:請把填空的答案(僅填空處的答案,不包括題面)存入考生資料夾下對應題號的「解答.txt」中即可。

直接寫在題面中不能得分。

void f(char* buf, unsigned

char* uckey, int n)

f(p, uckey, strlen(p));

f(p, uckey, strlen(p));

printf("%s\n", p);

free(uckey);

return

0;}

答案:

// 密匙串需要按位的形式迴圈拼入 uckey中  

int i;

for(i=0; i*8; i++)

else

}

為什麼1小時有60分鐘,而不是100分鐘呢?這是歷史上的習慣導致。

但也並非純粹的偶然:60是個優秀的數字,它的因子比較多。

事實上,它是1至6的每個數字的倍數。即1,2,3,4,5,6都是可以除盡60。

我們希望尋找到能除盡1至n的的每個數字的最小整數。

不要小看這個數字,它可能十分大,比如n=100, 則該數為:

69720375229712477164533808935312303556800

請編寫程式,實現對使用者輸入的 n (n<100)求出1~n的最小公倍數。

例如:

使用者輸入:

6 程式輸出:

60使用者輸入:

10 程式輸出:

2520

要求考生把所有函式寫在乙個檔案中。除錯好後,存入與考生資料夾下對應題號的「解答.txt」中即可。

相關的工程檔案不要拷入。

對於程式設計題目,要求選手給出的解答完全符合ansi c標準,不能使用c++特性;

不能使用諸如繪圖、中斷呼叫等硬體相關或作業系統相關的api。

答案:

#include 

#include

#include

#include

using

namespace

std;

const

int n = 105;

int n;

int a[n][50];

int b[n] = ;

void multiply()}}

}void printdata(int n)

//for(i=0; i<100; i++)

// cout/while(1);

multiply();

while(cin>>n)

printdata(n);

}return

0;}

古時喪葬活動中經常請高僧做法事。儀式結束後,有時會有「高僧鬥法」的趣味節目,以舒緩壓抑的氣氛。

節目大略步驟為:先用糧食(一般是稻公尺)在地上「畫」出若干級台階(表示n級浮屠)。又有若干小和尚隨機地「站」在某個台階上。最高一級台階必須站人,其它任意。

兩位參加遊戲的法師分別指揮某個小和尚向上走任意多級的台階,但會被站在高階台階上的小和尚阻擋,不能越過。兩個小和尚也不能站在同一台階,也不能向低階台階移動。

兩法師輪流發出指令,最後所有小和尚必然會都擠在高段台階,再也不能向上移動。輪到哪個法師指揮時無法繼續移動,則遊戲結束,該法師認輸。

對於已知的台階數和小和尚的分布位置,請你計算先發指令的法師該如何決策才能保證勝出。

輸入資料為一行用空格分開的n個整數,表示小和尚的位置。台階序號從1算起,所以最後乙個小和尚的位置即是台階的總數。(n<100, 台階總數<1000)

輸出為一行用空格分開的兩個整數: a b, 表示把a位置的小和尚移動到b位置。若有多個解,輸出a值較小的解,若無解則輸出-1。

例如:

使用者輸入:

1 5 9

則程式輸出:

1 4再如:

使用者輸入:

1 5 8 10

則程式輸出:

1 3資源約定:

峰值記憶體消耗 <64m

cpu消耗 < 1000ms

答案:(好像用到了尼姆定理)

#include

#include

#include

#include

#include

using

namespace

std;

int t[1111];

int b[1111];

int c[1111];

void xiazi(int sum)

}printf("-1\n");

return;

}int main()

sort(t+1, t+ sum + 1);

for(int i= 2; i<= sum; i++)

for(i= 1; i< sum; i+=2)

c[i]= c[0]^b[i];

if(c[0]==0)

printf("-1\n");

else

xiazi(sum);

return

0;}

如下圖所示,3 x 3 的格仔中填寫了一些整數。

+–*–+–+

|10* 1|52|

+–**–+

|20|30* 1|

*–+

| 1| 2| 3|

+–+–+–+

我們沿著圖中的星號線剪開,得到兩個部分,每個部分的數字和都是60。

本題的要求就是請你程式設計判定:對給定的m x n 的格仔中的整數,是否可以分割為兩個部分,使得這兩個區域的數字和相等。

如果存在多種解答,請輸出包含左上角格仔的那個區域包含的格仔的最小數目。

如果無法分割,則輸出 0。

輸入格式

程式先讀入兩個整數 m n 用空格分割 (m,n<10)。

表示**的寬度和高度。

接下來是n行,每行m個正整數,用空格分開。每個整數不大於10000。

輸出格式

輸出乙個整數,表示在所有解中,包含左上角的分割區可能包含的最小的格仔數目。

樣例輸入1

3 3

10 1 52

20 30 1

1 2 3

樣例輸出1

3樣例輸入2

4 3

1 1 1 1

1 30 80 2

1 1 1 100

樣例輸出2

10答案:

#include

#include

#include

#define n 10

intmap[n][n]=;

int vis[n][n];

int count=0;//記錄解得節點數

int mincount=1000;//記錄最小的節點數

int result=0;//記錄搜尋過程中的結果和

int dx[4]=;

int dy[4]=;

int half;

void mysearch(int i,int j,int n,int m);//回溯法進行搜尋

int main()

sum+=map[i][j];}}

half=sum/2;

if(max>half) //最大值大於全體數字的一般,無解

memset(vis,0,sizeof(vis));

i=j=0;

mysearch(i,j,n,m);

system("pause");

return0;}

void mysearch(int i,int j,int n,int m) //回溯法進行搜尋

if(vis[x][y]==0 && result+map[x][y] <= half)

else

if (result==half)

else

exit(0);

}for (r=0;r<4;r++)

vis[x][y]=0;

result=result-map[x][y];

count--;

return;

}

2014藍橋杯c組決賽 數字拆分

題目 正整數可以表示為若干正整數的累加和。如,對於正整數n 6,可以分劃為 65 1 4 24 1 1 3 33 2 1 3 1 1 1 2 2 2 2 2 1 1 2 1 1 1 1 1 1 1 1 1 1 現在的問題是,對於給定的正整數n,計算出所有劃分情況。下面的 實現了這個功能。仔細分析,填...

2015藍橋杯決賽

五月二十八號,坐上了開往北京的火車。第一次到北京參加全國性的比賽,第六屆藍橋杯決賽,心裡面還是很興奮的,同時也有一點點緊張,還是希望自己能拿乙個比較好的成績。提前一天到,大家看了看考場,比賽地點在北大計算中心,30號下午一點開始了正式的比賽,比賽時間四個小時。比賽題目型別和初賽差不多,有結果填空,填...

2014藍橋杯決賽 本科B組 生物晶元

x博士正在研究一種生物晶元,其邏輯密集度 容量都遠遠高於普通的半導體晶元。博士在晶元中設計了 n 個微型光源,每個光源操作一次就會改變其狀態,即 點亮轉為關閉,或關閉轉為點亮。這些光源的編號從 1 到 n,開始的時候所有光源都是關閉的。博士計畫在晶元上執行如下動作 所有編號為2的倍數的光源操作一次,...