【题解】Street Numbers [UVA138]

【题解】Street Numbers [UVA138]

传送门:\(\text{Street Numbers [UVA138]}\)

【题目描述】

求满足 \(n<m\)\(\sum_{i=1}^{n-1}i=\sum_{i=n+1}^{m}i\) 的正整数对 \(n,m\) 。从小到大输出前 \(10\) 组解,要求输出的每个整数都占 \(10\) 格宽。

【分析】

被抄代码+抄题解的xxs们气到了,于是写下这篇题解,顺便简单讲一下佩尔方程(好像在 \(\text{OI}\) 里运用不多)

佩尔方程是一种不定二次方程,且分为两类,该种方程有无穷多个解 【证明】

【第一类佩尔方程】

形如 \(x^2-Dy^x=1\) \((D\in\mathbb{N^{*}}\text{且为非平方数})\)

设它的一组最小正整数解为 \(\left\{\begin{array}{c}x=x_0\\y=y_0\end{array}\right.,\) 则其第 \(n\) 个解满足:\(x_n+\sqrt{D}y_n=(x_0+\sqrt{D}y_0)^{n+1}\)

\(\sqrt{D}\) 这个东西并不友好,考虑转换成递推式:

\[\begin{aligned}x_n+\sqrt{D}y_n&=(x_0+\sqrt{D}y_0)(x_0+\sqrt{D}y_0)^n\\ &=(x_0+\sqrt{D}y_0)(x_{n-1}+\sqrt{D}y_{n-1})\\ &=(x_0x_{n-1}+Dy_0y_{n-1})+\sqrt{D}(x_0y_{n-1}+y_0x_{n-1})\end{aligned}\]

即可得:\(\left\{\begin{array}{c}x_n=x_0x_{n-1}+Dy_0y_{n-1}\\y_n=x_0y_{n-1}+y_0x_{n-1}\end{array}\right.\)

【第二类佩尔方程】

形如 \(x^2-Dy^x=-1\) \((D\in\mathbb{N^{*}}\text{且为非平方数})\)

设它的一组最小正整数解为 \(\left\{\begin{array}{c}x=x_0\\y=y_0\end{array}\right.,\) 则其第 \(n\) 个解满足:\(x_n+\sqrt{D}y_n=(x_0+\sqrt{D}y_0)^{2n+1}\)

求递推式就把右边化成 \((x_0+\sqrt{D}y_0)^{2}(x_{n-1}+\sqrt{D}y_{n-1})\) 再展开,后续推导略。

【求解方法】

第一步是求最小正整数解。可以证明当 \(D\) 较小时 \(x_0,y_0\) 也较小,所以直接从小到大暴力枚举即可。算出 \(x_0,y_0\) 后即可递推得到其他解。

求解佩尔方程通常会以 高精递推/矩阵递推加速 的形式出现(虽然也没多少题)。

回到这题,先化简柿子:\(\frac{n(n-1)}{2}=\frac{m(m+1)}{2}-\frac{n(n+1)}{2}\Longrightarrow 2n^2=m^2+m\),显然和上面的方程没有丝毫关联,我们给两边同乘 \(4\) 然后配方:\(8n^2=4m^2+4m\Longrightarrow (2m+1)^{2}-8n^2=1\),忽略 \(n<m\) 的条件,显然为第一类佩尔方程。

瞪眼法暴力枚举法可知其最小解为 \(\left\{\begin{array}{c}x_0=3\\y_0=1\end{array}\right.\)

答案为 \(\left\{\begin{array}{c}n_i=y_i\\m_i=\frac{x_i-1}{2}\end{array}\right.\)

(输出来后发现除了第 \(0\) 个解以外其他均满足 \(n<m\)

【Code】

#include<algorithm>
#include<cstring>
#include<cstdio>
#define LL long long
#define Re register int
using namespace std;
const int N=103;
int D,x[N],y[N];
int main(){
    x[0]=3,y[0]=1,D=8;
    for(Re i=1;i<=10;++i)
        x[i]=x[0]*x[i-1]+D*y[0]*y[i-1],
        y[i]=x[0]*y[i-1]+y[0]*x[i-1];
    for(Re i=1;i<=10;++i)//因为要满足n<m,(x0,y0)被舍去了 
        printf("%10d%10d\n",y[i],x[i]-1>>1);
}

-----若要转载请私信作者获得许可并在文首标出转载来源-----

posted @ 2020-07-12 17:24  辰星凌  阅读(254)  评论(0编辑  收藏  举报