牛客網 NC207427 直線 高精度

2021-10-06 19:26:07 字數 3033 閱讀 9875

2. 解讀

3. **

time limit: c/c++ 1秒,其他語言2秒

memory limit: c/c++ 262144k,其他語言524288k

平面上存在 n

nn 條直線。請問 n

nn 條直線在平面上最多存在多少交點。

輸入資料的第一行是t,表示資料的組數 (

t<

100)

(t < 100)

(t<10

0), 接下來每組資料輸入乙個 n(1

≤n≤1

e15)n(1 \le n \le 1e15)

n(1≤n≤

1e15

)對於每組輸入樣例,列印 n

nn 條直線最多有多少個交點

2

12

0

1

牛客網 nc207427 直線

第 i +1

i + 1

i+1 條線最多能和前 i

ii 條線都相交,產生 i

ii 個新的交點。

所以最終結果為

n (n

−1)2

\frac

2n(n−1

)​但由於 n

nn 的資料範圍很大 (1≤

n≤1e

15)(1 \le n \le 1e15)

(1≤n≤1

e15)

#include

#include

#include

using

namespace std;

struct wint : vector<

int>

//用標準庫vector做基類,完美解決位數問題,同時更易於實現

wint&

check()

//在各類運算中經常用到的進製小函式,不妨內建

while

(back()

>=10)

return

*this

;//為使用方便,將進製後的自身返回引用}}

;//輸入輸出

istream&

operator

>>

(istream& is, wint& n)

ostream&

operator

<<

(ostream& os,

const wint& n)

//比較,只需要寫兩個,其他的直接代入即可

//常量引用當引數,避免拷貝更高效

bool

operator!=(

const wint& a,

const wint& b)

bool

operator==(

const wint& a,

const wint& b)

bool

operator

<

(const wint& a,

const wint& b)

bool

operator

>

(const wint& a,

const wint& b)

bool

operator

<=

(const wint& a,

const wint& b)

bool

operator

>=

(const wint& a,

const wint& b)

//加法,先實現+=,這樣更簡潔高效

wint&

operator+=

(wint& a,

const wint& b)

wint operator

+(wint a,

const wint& b)

//減法,返回差的絕對值,由於後面有交換,故引數不用引用

wint&

operator-=

(wint& a, wint b)

}return a.

check()

;}wint operator

-(wint a,

const wint& b)

//乘法不能先實現*=,原因自己想

wint operator*(

const wint& a,

const wint& b)

wint&

operator*=

(wint& a,

const wint& b)

//除法和取模先實現乙個帶餘除法函式

wint divmod

(wint& a,

const wint& b)

}return ans;

}wint operator

/(wint a,

const wint& b)

wint&

operator/=

(wint& a,

const wint& b)

wint&

operator%=

(wint& a,

const wint& b)

wint operator

%(wint a,

const wint& b)

//順手實現乙個快速冪,可以看到和普通快速冪幾乎無異

wint pow

(const wint& n,

const wint& k)

intmain()

}

聯絡郵箱[email protected]

csdn

知乎

牛客網 NC205084 牛牛愛字串

2.解讀 3.c c 1秒,其他語言2秒 c c 262144k,其他語言524288k 牛牛在玩字串。牛牛得到了乙個字串 可能含有空格 他希望在這些字串中提取出數字。例如 a1b23c456d007890中可以提取出1,23,456,7890共4個數字。現在,他得到了乙個長度高達1000的字串,請...

牛客網 NC204859 組隊 滑動視窗

2.解讀 3.time limit c c 1秒,其他語言2秒 memory limit c c 262144k,其他語言524288k 你的團隊中有 n nn 個人,每個人有乙個能力值 a ia i ai 現在需要選擇若干個人組成乙個團隊去參加比賽,由於比賽的規則限制,乙個團隊裡面任意兩個人能力的...

牛客網 NC14132 貝倫卡斯泰露 DFS

2.解讀 3.time limit 1000 ms memory limit 131072 kb 貝倫卡斯泰露,某種程度上也可以稱為古手梨花,能夠創造機率近乎為0的奇蹟,通過無限輪迴成功打破了世界線收束理論。和某科學者不同,貝倫並不在意世界線收束的那套理論,作為奇蹟之魔女,貝倫的愛好只在於品茶。作為...