hdu2281 Squre Number——Pell方程

题意

输入一个 $N$,求最大的 $n$($n \leq N$)和 $x$,使得 $x^2 = \frac{1^2+2^2+...+n^2}{n}$.

分析

将右边式子的分子求和化简,有:$x^2 = \frac{(n+1)(2n+1)}{6}$.

变换成:$(4n+3)^2-48x^2 = 1$.

这就是佩尔方程的形式,且样例给出了最小整数解(7, 1)。

求出long long范围内的所有解(也就9个)

#include<bits/stdc++.h>
using namespace std;

typedef long long ll;
ll n;
vector<ll>nn, xx;

void init()
{
    ll pre_x = 7, pre_y = 1;
    nn.push_back(1), xx.push_back(1);
    for(int i;;i++)
    {
        ll tmpx = pre_x*7 + pre_y*1*48;
        ll tmpy = pre_x*1 + pre_y*7;
        if(tmpx < 0)  break;
        if((tmpx-3)%4 == 0)
        {
            nn.push_back((tmpx-3)/4);
            xx.push_back(tmpy);
        }
        pre_x = tmpx; pre_y = tmpy;
    }
    nn.push_back((ll)1e18+5);  //设置一个边界
}

int main()
{
    init();
    //printf("%d\n", nn.size());
    while(scanf("%lld", &n) == 1 && n)
    {
        for(int i = 0;i < nn.size();i++)
        {
            if(n < nn[i])
            {
                printf("%lld %lld\n", nn[i-1], xx[i-1]);
                break;
            }
        }
    }
}

参考链接:https://blog.csdn.net/u011815404/article/details/88723480

原文地址:https://www.cnblogs.com/lfri/p/11650074.html

时间: 2024-10-29 17:24:57

hdu2281 Squre Number——Pell方程的相关文章

Pell方程(求形如x*x-d*y*y=1的通解。)

佩尔方程x*x-d*y*y=1,当d不为完全平方数时,有无数个解,并且知道一个解可以推其他解. 如果d为完全平方数时,可知佩尔方程无解. 假设(x0,y0)是最小正整数解. 则: xn=xn-1*x0+d*yn-1*y0 yn=xn-1*y0+yn-1*x0 证明只需代入. 如果忘记公式可以自己用(x0*x0-d*y0*y0)*(x1*x1-d*y1*y1)=1 推. 这样只要暴力求出最小特解,就可以用快速幂求出任意第K个解. Street Numbers Time Limit: 1000MS

[NBUT 1224 Happiness Hotel 佩尔方程最小正整数解]连分数法解Pell方程

题意:求方程x2-Dy2=1的最小正整数解 思路:用连分数法解佩尔方程,关键是找出√d的连分数表示的循环节.具体过程参见:http://m.blog.csdn.net/blog/wh2124335/8871535 当d为完全平方数时无解 将√d表示成连分数的形式,例如: 当d不为完全平方数时,√d为无理数,那么√d总可以表示成: 记 当n为偶数时,x0=p,y0=q:当n为奇数时,x0=2p2+1,y0=2pq 求d在1000以内佩尔方程的最小正整数解的c++打表程序(正常跑比较慢,这个题需要离

No more tricks, Mr Nanguo HDU - 3292(pell + 矩阵快速幂)

No more tricks, Mr Nanguo Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 576    Accepted Submission(s): 390 Problem Description Now Sailormoon girls want to tell you a ancient idiom story named

杭电ACM分类

杭电ACM分类: 1001 整数求和 水题1002 C语言实验题——两个数比较 水题1003 1.2.3.4.5... 简单题1004 渊子赛马 排序+贪心的方法归并1005 Hero In Maze 广度搜索1006 Redraiment猜想 数论:容斥定理1007 童年生活二三事 递推题1008 University 简单hash1009 目标柏林 简单模拟题1010 Rails 模拟题(堆栈)1011 Box of Bricks 简单题1012 IMMEDIATE DECODABILITY

【转】对于杭电OJ题目的分类

[好像博客园不能直接转载,所以我复制过来了..] 1001 整数求和 水题1002 C语言实验题——两个数比较 水题1003 1.2.3.4.5... 简单题1004 渊子赛马 排序+贪心的方法归并1005 Hero In Maze 广度搜索1006 Redraiment猜想 数论:容斥定理1007 童年生活二三事 递推题1008 University 简单hash1009 目标柏林 简单模拟题1010 Rails 模拟题(堆栈)1011 Box of Bricks 简单题1012 IMMEDI

转载:hdu 题目分类 (侵删)

转载:from http://blog.csdn.net/qq_28236309/article/details/47818349 基础题:1000.1001.1004.1005.1008.1012.1013.1014.1017.1019.1021.1028.1029. 1032.1037.1040.1048.1056.1058.1061.1070.1076.1089.1090.1091.1092.1093. 1094.1095.1096.1097.1098.1106.1108.1157.116

Bulb Switcher

There are n bulbs that are initially off. You first turn on all the bulbs. Then, you turn off every second bulb. On the third round, you toggle every third bulb (turning on if it's off or turning off if it's on). For the ith round, you toggle every i

这个是置顶的标题(`?ω?&#180;)

寒假几天的集训来看,自己不会的算法还是很多_(:зゝ∠)_,还有一些暑假学的忘记了,想想整个大二上学期,也就学了一个网络流,一个AC自动机,一个后缀数组.寒假时间还是很充裕的,适合研究几个算法. 就目前来看,自己唯一有优势的地方是代码能力稍微好一些,其他很多地方还是不如别人... [下面的完整知识目录来自这里@whatbeg] 1: 高级数据结构(17) 并查集,线段树,树状数组,KMP,字典树(Trie),左偏树(可合并堆),单调队列,优先队列,AC自动机,后缀树/数组,二叉堆,伸展树,Tre

11~15

11,含不同数字的三位数: public class ThridNum {     public static void main(String[] args) {         int count = 0;         for (int x = 1; x < 5; x++) {             for (int y = 1; y < 5; y++) {                 for (int z = 1; z < 5; z++) {