萊布尼茲三角形
難度級別:b; 執行時間限制:1000ms; 執行空間限制:51200kb; **長度限制:2000000b
試題描述
如下圖所示的三角形,請程式設計輸出圖中排在第 n 行從左邊數第 m 個位置上的數。
輸入一行包括兩個正整數,分別為 n 和 m,兩數間用乙個空格分隔。
輸出乙個如樣例所示格式的分數。
輸入示例
6 2輸出示例
1/30
其他說明
資料範圍:1<= m <= n <= 100.
這道題也是前100道題中為數不多的需要用到演算法解決的題了。所用演算法為:遞推。
遞推大概就類似於找規律,通過對陣列下標的利用最終在對應位置找到結果。
所以,咱們要先找到規律。
經過觀察,我們發現:
下一行的第1、2個數相加就等於上一行的第1個數,
下一行的第2、3個數相加就等於上一行的第2個數……以此類推,
第x行的第a、b個數相加就等於第x-1行的第a個數。同時左右兩邊則為1/1,1/2,1/3……即分母依次增加1。
發現規律後,我們就可以根據它寫**了。
同時有一點特別要注意:位置越靠下的數的分母越大,int會存不下。
#includeusing namespace std;long long a[105][105],n,m;//越往下分子越大,避免炸掉。
int main()
} printf("1/%lld",a[n][m]);//輸出第n行m列。
return 0;
}
萊布尼茲三角形(OJ0082)
本題適合學過陣列 迴圈的同學學習。相信大家可以很輕鬆找出規律,就是a i j a i 1 j a i 1 j 1 a陣列儲存第i行j列的分數 但是陣列中不方便儲存整個分數的值,用double?精度不夠。由於分子都是1,只儲存分母就可以了,要用long long。int 會爆掉 include inc...
求大三角形中三角形個數
一道筆試程式設計題要求求乙個大三角形中所有小三角形的個數,大約是下面這種情況 首先想到是的將問題由求邊長為n的三角形個數 求邊長為n 1的三角形個數 求邊長為1的三角形個數 1,回溯求得所有三角形個數。但是再仔細一看因為有重疊三角形和倒置的三角形,所以這個方法不可行。接著找到三角形個數由三部分組成 ...
經典演算法 (三)帕斯卡三角形(楊輝三角形)
楊輝三角,是二項式係數在三角形中的一種幾何排列。在歐洲,這個表叫做帕斯卡三角形。帕斯卡 1623 1662 是在1654年發現這一規律的,比楊輝要遲393年,比賈憲遲600年。簡介 楊輝三角,是二項式係數在三角形中的一種幾何排列。在歐洲,這個表叫做帕斯卡三角形。帕斯卡 1623 1662 是在165...