一.第一題
二項式的係數規律,我國數學家很早就發現了。
如【圖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:
還有幾道題沒有完善,稍後會更新的。