第五屆試題及題解__第五屆賽題及答案

來源:互聯網
上載者:User

一.第一題

二項式的係數規律,我國數學家很早就發現了。
如【圖1.png】,我國南宋數學家楊輝1261年所著的《詳解九章演算法》一書裡就出現了。
其排列規律:
1
1    1
1    2    1
1    3    3    1
1    4    6    4    1
1    5    10   10   5    1
1    6    15   20   15   6    1
1    7    21   35   35   21   7    1


如下的程式,用來建立N行的楊輝三角形。請填寫劃線部分缺少的代碼。


注意:只填寫劃線部分的代碼,不要填寫任何多餘的內容。

#define N 8int main(){int a[N][N];int i,j;for(i=0; i<N; i++){a[i][0] = 1;a[i][i] = 1;}for(i=1; i<N; i++){for(j=1; j<i; j++) ____a[i][j]=a[i-1][j-1]+a[i-1][j];_______;}for(i=0; i<N; i++){for(j=0; j<=i; j++)printf("%-5d", a[i][j]);printf("\n");}return 0;}

第一題就是一道楊輝三角的題目公式,隨便一推就ok了。


二.第二題



1/1 + 1/2 + 1/3 + 1/4 + ... 在數學上稱為調和級數。
它是發散的,也就是說,只要加上足夠多的項,就可以得到任意大的數字。
但是,它發散的很慢:

前1項和達到 1.0
前4項和才超過 2.0
前83項的和才超過 5.0

那麼,請你計算一下,要加多少項,才能使得和達到或超過 15.0 呢。
請填寫這個整數。

注意:只需要填寫一個整數,不要填寫任何多餘的內容。比如解說文字。

本人代碼:

#include <stdio.h>//1673859int main(){float sum = 0;for(int i=1;i<=10000000;i++){sum += (float)1/i;//printf("%f\n",sum);if(sum>=15){printf("%f\n",sum);printf("%d\n",i);return 0;} }return 0;}

答案為:1673859.  最終得出的i的值就是答案。


三.第三題



有如下的加法算式。其中每個漢字代表一個數字。
(如果存在對齊問題,可參見【圖1.png】)


               年
             大年
           過大年
         能過大年
       怎能過大年
     我怎能過大年
+  讓我怎能過大年
------------------
   能能能能能能能


請填寫“讓我怎能過大年” 所代表的整數。
所有數字連在一起,中間不要空格。例如:"3125697"。當然,這個不是正確的答案。


注意:只填寫一個整數,不要填寫任何多餘的內容。

My Code:

#include <stdio.h>//1572836int main(){for(int i=1;i<=9;i++){for(int j=0;j<=9;j++){for(int k=0;k<=9;k++){for(int h=0;h<=9;h++){for(int g=0;g<=9;g++){for(int o=0;o<=9;o++){for(int u=0;u<=9;u++){if(u*1*7+o*10*6+g*100*5+h*1000*4+k*10000*3+j*100000*2+i*1000000 == h*1000000+h*100000+h*10000+h*1000+h*100+h*10+h){printf("%d %d %d %d %d %d %d\n",i,j,k,h,g,o,u);//return 0;}}}}} }}} return 0;}

所以答案為1572836,暴力就可以得出來的


第四題

1193是個素數,對它迴圈移位後發現:
1931,9311,3119也都是素數,這樣特徵的數叫:迴圈素數。
你能找出具有這樣特徵的5位元的迴圈素數嗎。
當然,這樣的數字可能有很多,請寫出其中最大的一個。
注意:答案是個5位元,不要填寫任何多餘的內容。




第五題



把一個整數的每個數位都平方後求和,又得到一個整數,我們稱這個整數為:位平方和。
對新得到的整數仍然可以繼續這一運算過程。
比如,給定整數為4,則一系列的運算結果為:

16,37,58,89,....

本題的要求是,已知一個整數x,求第n步的運算結果。
資料格式要求:
輸入,兩個整數x n,中間以空格分開。表示求x的第n步位平方和。其中,x,n都大於0,且小於100000。
輸出,一個整數,表示所求結果。

例如,
輸入:
4 3
則程式應該輸出:
58

再例如,
輸入:
1314 10
則程式應該輸出:
20

資源約定:
峰值記憶體消耗 < 256M
CPU消耗  < 1000ms

請嚴格按要求輸出,不要畫蛇添足地列印類似:“請您輸入...” 的多餘內容。
所有代碼放在同一個源檔案中,調試通過後,拷貝提交該源碼。

注意: main函數需要返回0
注意: 只使用ANSI C/ANSI C++ 標準,不要調用依賴於編譯環境或作業系統的特殊函數。
注意: 所有依賴的函數必須明確地在源檔案中 #include <xxx>, 不能通過工程設定而省略常用標頭檔。

提交時,注意選擇所期望的編譯器類型。


My Code:

#include <stdio.h>int a[100000];int s,n,h=0;int check(int x){int y=0,sum=0;int aa;while(x > 0){aa=x%10;a[y++] = aa;x=x/10;}for(int i=0;i<y;i++){sum+=(a[i]*a[i]);}return sum;}int main(){scanf("%d %d",&s,&n);h=s;for(int i=1;i<=n;i++){h = check(h);if(i==n){printf("%d\n",h);return 0;}}return 0;}

第六題

形如:1/a 的分數稱為單位分數。

可以把1分解為若干個互不相同的單位分數之和。
例如:
1 = 1/2 + 1/3 + 1/9 + 1/18
1 = 1/2 + 1/3 + 1/10 + 1/15
1 = 1/3 + 1/5 + 1/7 + 1/9 + 1/11 + 1/15 + 1/35 + 1/45 + 1/231
等等,類似這樣的分解無窮無盡。

我們增加一個約束條件:最大的分母必須不超過30
請你求出分解為n項時的所有不同分解法。
資料格式要求:

輸入一個整數n,表示要分解為n項(n<12)
輸出分解後的單位分數項,中間用一個空格分開。
每種分解法佔用一行,行間的順序按照分母從小到大排序。

例如,
輸入:
4
程式應該輸出:
1/2 1/3 1/8 1/24
1/2 1/3 1/9 1/18
1/2 1/3 1/10 1/15
1/2 1/4 1/5 1/20
1/2 1/4 1/6 1/12

再例如,
輸入:
5
程式應該輸出:
1/2 1/3 1/12 1/21 1/28
1/2 1/4 1/6 1/21 1/28
1/2 1/4 1/7 1/14 1/28
1/2 1/4 1/8 1/12 1/24
1/2 1/4 1/9 1/12 1/18
1/2 1/4 1/10 1/12 1/15
1/2 1/5 1/6 1/12 1/20
1/3 1/4 1/5 1/6 1/20

資源約定:
峰值記憶體消耗 < 256M
CPU消耗  < 2000ms

請嚴格按要求輸出,不要畫蛇添足地列印類似:“請您輸入...” 的多餘內容。
所有代碼放在同一個源檔案中,調試通過後,拷貝提交該源碼。

注意: main函數需要返回0
注意: 只使用ANSI C/ANSI C++ 標準,不要調用依賴於編譯環境或作業系統的特殊函數。
注意: 所有依賴的函數必須明確地在源檔案中 #include <xxx>, 不能通過工程設定而省略常用標頭檔。

提交時,注意選擇所期望的編譯器類型。




第七題你一定聽說過“數獨”遊戲。
如【圖1.png】,玩家需要根據9×9盤面上的已知數字,推理出所有剩餘空格的數字,並滿足每一行、每一列、每一個同色九宮內的數字均含1-9,不重複。

數獨的答案都是唯一的,所以,多個解也稱為無解。

本圖的數字據說是芬蘭數學家花了3個月的時間設計出來的較難的題目。但對會使用電腦編程的你來說,恐怕易如反掌了。
本題的要求就是輸入數獨題目,程式輸出數獨的唯一解。我們保證所有已知資料的格式都是合法的,並且題目有唯一的解。

格式要求,輸入9行,每行9個字元,0代表未知,其它數字為已知。
輸出9行,每行9個數字表示數獨的解。

例如:
輸入(即圖中題目):
005300000
800000020
070010500
400005300
010070006
003200080
060500009
004000030
000009700

程式應該輸出:
145327698
839654127
672918543
496185372
218473956
753296481
367542819
984761235
521839764

再例如,輸入:
800000000
003600000
070090200
050007000
000045700
000100030
001000068
008500010
090000400

程式應該輸出:
812753649
943682175
675491283
154237896
369845721
287169534
521974368
438526917
796318452

資源約定:
峰值記憶體消耗 < 256M
CPU消耗  < 2000ms

請嚴格按要求輸出,不要畫蛇添足地列印類似:“請您輸入...” 的多餘內容。
所有代碼放在同一個源檔案中,調試通過後,拷貝提交該源碼。

注意: main函數需要返回0
注意: 只使用ANSI C/ANSI C++ 標準,不要調用依賴於編譯環境或作業系統的特殊函數。
注意: 所有依賴的函數必須明確地在源檔案中 #include <xxx>, 不能通過工程設定而省略常用標頭檔。

提交時,注意選擇所期望的編譯器類型。




My Code:



還有幾道題沒有完善,稍後會更新的。








聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.