今天看到乙個有趣的題目:
1
1 1 1
1 2 3 2 1
1 3 6 7 6 3 1
以上三角形的數陣,第一行只有乙個數1, 以下每行的每個數,是恰好是它上面的數,左上的數和右上數等3個數之和(如果不存在某個數,認為該數就是0)。
求第n行第乙個偶數出現的位置。如果沒有偶數,則輸出-1。例如輸入3,則輸出2,輸入4則輸出3。 輸入n(n <= 1000000000)
看了題目,我就想模擬一下,可是一看n <= 1000000000;這就沒有模擬的必要了,沒那麼多的空間啊...
最後,習慣性的用筆畫了畫,首先,左右對稱是肯定的,又因為左上的數和右上數等3個數之和,所以,中間持續是奇數;
然後前兩行明顯都是奇數,所以返回0;
再看第二列以後的資料
1 2 3 4 5 6...所以,後面的奇數行的第二位都是偶數;
而後面的偶數行的資料是在第二位以後的(接下來才是重點):
1
1 1 1
1 2 3 2 1
1 3 6 7 6 3 1
1 4 10 16 19
1 5 15 30 .....
再看每一行的第三個資料,1 3 6 10 15...這些都是1 1+2 1+2+3 1+2+3+4 1+2+3+4+5...遞增相加,所以它的奇偶也是逐漸變化的,所以在偶數行中,第4 8 12 ...行的第三位都是偶數;而第6 10 14...也的第四位成功的因為前面一行的偶數成為了偶數;《暫時找不到好的規律的說,不過可以參考一下下面》
好吧,從第一行開始向下看,從左往右看四個資料,到中間為止(夠四個的就看過來)
1 奇
2 奇奇
3 奇偶奇
4 奇奇偶奇
5 奇偶偶偶
6 奇奇奇偶
7 奇偶奇偶
8奇奇偶奇
前面兩行我就不說了,3 5 7 行也都是很明顯的,第二位是偶數
由第4行到第7行,分別是奇奇偶奇 奇偶偶偶 奇奇奇偶 奇偶奇偶,而在第8行,又和第4行一樣了奇奇偶奇,所以,後面的行前面4個資料也會按照這個規律下去;
好的,祭出**:
#include #include int run(int x)
else if(x % 2 == 1) //奇數行第乙個出現偶數為2
else if(x % 4 == 0) // 4 8 12...在第三位
else
return 4;
}int main()
各位有清晰的請賜教,多謝...
不了解的也歡迎提出
歡迎各位大神指點,o(∩_∩)o
楊輝三角變形 高效解析
題目解析 拿到這道題大多數人的第一反應都是先將楊輝三角用乙個二維陣列表示出來,然後直接在第n行找就可以了,這樣的方法是最直接的,但不是最高效的,雖然我一開始也是這樣做的,但是我將楊輝三角列印出來發現他事有規律可找的 第1 2行沒有偶數 第3行開始奇數行第乙個偶數是第2個數,偶數行則是第3個數 特別注...
楊輝三角的變形 程式設計題
1 1 1 1 1 2 3 2 1 1 3 6 7 6 3 1 1 4 10 16 19 16 10 4 1 以上三角形的數陣,第一行只有乙個數1,以下每行的每個數,是恰好是它上面的數,左上角數到右上角的數,3個數之和 如果不存在某個數,認為該數就是0 求第n行第乙個偶數出現的位置。如果沒有偶數,則...
龐果網 楊輝三角變形
思路 找規律 顯而易見,對於n小於2時,是輸出 1的,因為沒有答案 當n大於2,由定義可知,每項的第乙個數字為1,第二個數子為n 1,由此當n為奇數時,他的第二項就為偶數,就是題意要求的,所以對於n為奇數時總是輸出2 當n為偶數時,多寫幾行可知它有迴圈節,且迴圈節為4,此時有如下對應 n 輸出的數字...