直角三角錐

2022-09-06 05:24:11 字數 1076 閱讀 1217

整天與整數打交道的小明希望知道這個三稜錐內、上整點的數目。

他覺得數量可能很多,所以答案需要對給定的 m 取模。

輸入有 1 ≤ t ≤ 1e5 組資料,每組資料中,輸入兩個整數 0<=k<=1e9+7,0<=m<=1e9+7,意義如題目描述。
對於每組資料,輸出乙個整數,為三稜錐內、上整點的數目對 m 取模。
4

0 60

1 60

29 60

29 100007

1440

4960

這道題目公式都已經推出來了,但是卻沒有化簡,最後還是沒有做出來。

這道題目我將它當做乙個排列組合問題來思考,它相當於是要尋找x+y+z<=k && x>=0 && y>=0 && z>=0 的整點數個數,其實滿足這個條件的數,就相當於尋找x+y+z<=k-1 && x>=0 && y>=0 && z>=0 和 x+y+z=k && x>=0 && y>=0 && z>=0這兩個區域數的個數,那麼我們只需要解決x+y+z=k && x>=0 && y>=0 && z>=0這個子問題,再進行累加求和就行了。

對於x+y+z=k && x>=0 && y>=0 && z>=0這個區域,整數的個數又有多少呢,其實固定其中x,y的取值,z的取值就會得到,當x取0,y有k+1取法,當x取1,y有k種取法。。

所以總數=(k+1)+k+(k-1)+......+2+1=(k+2)*(k+1)/2

推出得到公式

這個n=k+1,然後進行化簡,之前我想複雜了,我將第i項和第i+1項結合起來,並分了奇偶來做,其實將括號開啟就行,最後化簡得到

(n+1)*(n+2)*(n+3)/6,這道題目還涉及如何取模,當(n+1)*(n+2)*(n+3)相乘,範圍可能會爆掉,所以要在之前取模,而取模可能會影響到除法的操作,m*=6,就會使最後結果不變。

#includeusing

namespace

std;

intmain()

}

正直角三角形

在平面直角座標系的第一象限內有m個點。正直角三角形 是一種奇特的三角形,它的三個頂點分別在原點 x軸的正方向和y軸的正方向。請用乙個面積最小的 正直角三角形 將這些點全部圍住,求解面積的大小。題目中所有的座標 包括正直角三角形的頂點座標 都為整數。input 1 m,xi,yi 100 每行乙個答案...

模擬 直角三角形

平面上給定n個兩兩不同的整點,統計以給定的點為頂點,且直角邊平行於座標軸的直角三角形數。輸入格式 輸入檔案right.in第一行為乙個整數n。以下n行,每行給出乙個點的座標。輸出格式 輸出檔名為right.out。輸出乙個整數表示統計結果。輸入樣例 1 0 0 0 11 0 1 1 輸出樣例 1 4...

直角三角形求斜邊

1 1 分數 題目描述 請編寫程式計算直角三角形的斜邊長度,兩條直角邊的長度由鍵盤輸入。輸入描述兩直角邊均為浮點型 float 中間以乙個空格隔開 輸出描述輸出斜邊長度,保留小數點後5位 樣例輸入 3 4樣例輸出 5.00000 1 1 分數 題目描述 請編寫程式計算直角三角形的斜邊長度,兩條直角邊...