CF1487D Pythagorean Triples 题解

一看就是推式子。

由题得

\[\begin{cases}c^2=a^2+b^2\\c=a^2-b\end{cases} \]

将下面的式子代入上式得

\[(a^2-b)^2=a^2+b^2 \]

拆开,抵消,移项

\[a^4-2a^2b-a^2=0 \]

两边约去 \(a^2\)

\[a^2-1=2b \]

\[a^2=2b+1 \]

因为 \(b \in N\),所以 \(a\) 是奇数。

再次代入得

\[c=a^2-b=2b+1-b=b+1 \]

所以对于每一个奇数 \(a\),都有且仅有一对 \((b,c)\) 满足条件。于是问题转化为 \(a\) 的数量。(当然,容易发现 \(a=1\) 时除外。)

由于 \(1 \le a \le b \le c = b+1 \le n\),所以 \(b\le n-1\)

然后又因为 \(a^2=2b+1 \le 2n-1\),所以 \(a\le \sqrt{2n-1}\).。

又因为 \(a\) 是奇数且不为 \(1\),所以 \(a\) 的数量为 \(\dfrac{\sqrt{2n-1} -1}2\)

个人觉得这题比 C 水。

关键代码:

long long n;cin>>n;
cout<<((int)sqrt(2*n-1)-1)/2<<endl;
posted @ 2021-02-22 16:37  ฅ(OωO)ฅ  阅读(67)  评论(1编辑  收藏  举报
"scale": 1 }, "display": { "position": "left", "width": 100, "height": 200, "hOffset": 70, "vOffset": 0 }, "mobile": { "show": true, "scale": 0.5 }, "react": { "opacityDefault": 0.7, "opacityOnHover": 0.2 } }); window.onload = function(){ $("#live2dcanvas").attr("style","position: fixed; opacity: 0.7; left: 70px; bottom: 0px; z-index: 1; pointer-events: none;") } -->