牛客練習賽51 C 勾股定理

2022-08-16 01:15:13 字數 900 閱讀 3561

給出直角三角形其中一條邊的長度n,你的任務是構造剩下的兩條邊,使這三條邊能構成乙個直角三角形。

乙個整數n。
另外兩條邊b,c。答案不唯一,只要輸出任意一組即為合理,如果無法構造請輸出-1。
示例1

複製

3

複製

4 5

示例2複製

4

複製

3 5

0<=n<=1e9

1<=b,c<=1e18

n,b,c均為整數

勾股數:

當a為大於1的奇數2n+1時,b=2n²+2n, c=2n²+2n+1。

實際上就是把a的平方數拆成兩個連續自然數,例如:

n=1時(a,b,c)=(3,4,5)

n=2時(a,b,c)=(5,12,13)

n=3時(a,b,c)=(7,24,25)

……這是最經典的乙個套路,而且由於兩個連續自然數必然互質,所以用這個套路得到的勾股陣列全部都是互質的。

2、當a為大於4的偶數2n時,b=n²-1, c=n²+1

也就是把a的一半的平方分別減1和加1,例如:

n=3時(a,b,c)=(6,8,10)

n=4時(a,b,c)=(8,15,17)

n=5時(a,b,c)=(10,24,26)

n=6時(a,b,c)=(12,35,37)

#include using

namespace

std;

intmain()

else

if(n>=4&&n%2==0

)

else

cout

<< -1

}

牛客練習賽51

theme 給定n與m,要求你用正整數填充n個元素,使得這n個元素的和 m,定義喜愛度為i的個數使得2 i n且a i a i 1 1。1 n 1e5,1 m 1e9 solution 構造題。考慮列舉分成幾個段i,若某段的長度為len,則該段的數為1 len,可知喜愛度應為n i,所以我們的目標是...

題解 牛客練習賽51

字首a的數量,字尾c的數量,遇到b就計算一次答案。includeusing namespace std typedef long long ll const int n 1e5 100 char s n int cnt n int main int tmp 0 for int i 1 i n i p...

牛客練習賽51 A B C

前字尾維護字串中b左邊a的個數和b的個數,對於每個b,它能構成的的abc的個數即為它前面a的個數乘以它後面c的個數 include using namespace std define ll long long define inf 0x3f3f3f3f typedef pair int,int p...