至尊问题「建议收藏」

称号:已知m、n为整数,且满足下列两个条件:① m、n∈1,2,…,K,(1≤K≤10^9)② (n^ 2-mn-m^2)^2=1编一程序,对给定K,求一组满足上述两个条件的m、n,而且使m^2+n^2的值最大。比如,若K=1995,则m=987,n=1597,则m、n满足条件,且可使m^2+n^2的值最大。输入输入仅一行,K的值。输出…

大家好,又见面了,我是你们的朋友全栈君。

称号:

已知m、n为整数,且满足下列两个条件:
① m、n∈1,2,…,K,(1≤K≤10^9)

② (n^ 2-mn-m^2)^2=1
编一程序,对给定K,求一组满足上述两个条件的m、n,而且使m^2+n^2的值最大。比如,若K=1995,则m=987,n=1597,则m、n满足条件,且可使m^2+n^2的值最大。

输入

输入仅一行,K的值。

输出

输出仅一行,m^2+n^2的值。

例子输入

1995

例子输出

3524578

题目字数不多。可是条件2看起来貌似有点复杂。但实际上。它也是个突破口;

由条件2:(n^ 2-mn-m^2)^2=1

故而:      (m^2 + mn- n^2)^2=1

继续化简:m^2+mn-n^2=(m+n)^2-mn-2n^2 

                                                =(m+n)^2-(m+n)n-n^2
即:          (n^2-mn-m^2)^2=[(m+n)^2-(m+n)n-n^2]^2

我们观察上述最后的等式,我们能够发现

n->m+n (第一个平方)

m->n,n->m+n(中间的因式)

m->n(第二个平方)

这时我们发现这是我们熟悉的斐波那契数列。这样。这一题的突破口非常明显了,m、n都是在K(包含K)之内的最大的两个满足斐波那契数列的数;

另外因为1≤K≤10^9可能m、n数字较大,即会发生数字超限,用两个数组进行平方运算以及相加运算。

#include <iostream>using namespace std;void Add(int *arrm, int *arrn, int len)  //大整数相加{    int *arr = new int[len + 1];    for(int i = 0; i < len + 1; i++)        arr[i] = 0;    for(int i = 0; i < len; i++)    {        arr[i] += arrm[i] + arrn[i];        if(arr[i] >= 10)  //进位        {            arr[i + 1] += arr[i] / 10;            arr[i] %= 10;        }    }    int index = len;    while(!arr[index])    {        index--;    }    for(int i = index; i >= 0; i--)        cout << arr[i];    cout << endl;}void Mul(int *arr, int *arr1, int len1)  //大整数相乘{    for(int i = 0; i < len1; i++)    {        for(int j = 0; j < len1; j++)        {            arr[i + j] += arr1[i] * arr1[j];            if(arr[i + j] >= 10)  //进位            {                arr[i + j + 1] += arr[i + j] / 10;                arr[i + j] %= 10;            }        }    }}void BigData(int m, int n){    int num1 = m;    int num2 = n;    int *arr1 = new int[10];    int *arr2 = new int[10];    int len1 = 0, len2 = 0;    while(num1)  //数字数组化    {        arr1[len1++] = num1 % 10;        num1 /= 10;    }    while(num2)    {        arr2[len2++] = num2 % 10;        num2 /= 10;    }    int len;    if(len1 > len2)        len = 2 * len1;    else        len = 2 * len2;    int *arrm = new int[len];    int *arrn = new int[len];    for(int i = 0; i < len; i++)    {        arrm[i] = 0;        arrn[i] = 0;    }    Mul(arrm, arr1, len1);  //大整数相乘    Mul(arrn, arr2, len2);    Add(arrm, arrn, len);  //相加}void Fibo(int K){    if(K < 1)        return;    if(K == 1)    {        cout << 2 << endl;        return;    }    int m = 1, n = 1;    int p = m + n;    while(p <= K)  //寻找满足条件的两个Fibonacci数    {        m = n;        n = p;        p = m + n;    }    if(m < 10000 || n < 10000)        cout << m * m + n * n << endl;    else        BigData(m, n);}int main(){    int K;    cin >> K;    Fibo(K);    return 0;}

至尊问题「建议收藏」

O(∩_∩)O欢迎不吝赐教….

版权声明:本文博主原创文章,博客,未经同意不得转载。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/129191.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • LCD1602温度显示程序设计流程「建议收藏」

    LCD1602温度显示程序设计流程「建议收藏」在温度的显示上,采用LCD1602,可以显示两行字符,每行16个,显示容量为162。通过并行接口,可与单片机的I/O口直接相连。

    2022年7月16日
    16
  • 软件测试未来3到5年的规划_测试开发工程师面试题库

    软件测试未来3到5年的规划_测试开发工程师面试题库不同环境的含义

    2022年9月30日
    0
  • laravel 学习笔记blog后台

    laravel 学习笔记blog后台

    2021年10月24日
    49
  • 卷积神经网络常用模型_keras 卷积 循环 多分类

    卷积神经网络常用模型_keras 卷积 循环 多分类刚刚接触到深度学习,前2个月的时间里,我用一维的卷积神经网络实现了对于一维数据集的分类和回归。由于在做这次课题之前,我对深度学习基本上没有过接触,所以期间走了很多弯路。在刚刚收到题目的要求时,我选择使用TensorFlow来直接编写函数,结果由于没有什么基础,写了一个周我就放弃了,改用keras来完成我的任务。用keras来搭建神经网络其实很简单。网络的前面部分都是在提取一维信号的特征…

    2022年9月23日
    0
  • PyQt5+Pycharm安装和配置「建议收藏」

    PyQt5+Pycharm安装和配置「建议收藏」PyQt5安装之前安装过anaconda,里面是含有pyqt的,在环境里搜索可以看到,但是针对实际开发,并没有全部的qt5工具,所以需要再次安装。在cmd里面运行:pipinstallPyQt5-ihttps://pypi.douban.com/simple安装常用的Qt工具:pipinstallPyQt5-tools-ihttps://pypi…

    2022年8月27日
    1
  • 学生成绩管理系统(C语言)「建议收藏」

    学生成绩管理系统(C语言)「建议收藏」思路学生成绩管理系统,首先要初始化系统,开始一个新的学生成绩系统初始化记录学生姓名,学号,院系,然后输入学生各科成绩,数学,英语,语文成绩。记录完各课成绩以后,可查看学生平均成绩和是否及格,成绩查询其中有学号查询,姓名查询,院系查询,还有全部输出,可以清晰的看到及格人数,按照分数高低排列,最后还可以添加和删除学生成绩,或者更改学生成绩,避免人为录入成绩错误。基本函数1.结构体structStudent定义一个结构体struct,结构体的关键字,students定义的结构体对象。学…

    2022年6月20日
    33

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号