洛谷P1936 水晶灯火灵 P1775 古代人的难题_NOI导刊2010提高(02)【重题请做P1936】
首先我要说明,此题(古代人的难题)与水晶灯火灵是一模一样的!
古代人的难题
(File IO): input:puzzle.in output:puzzle.out
时间限制: 1000 ms 空间限制: 60000 KB 具体限制
Time to Submit: 01:57:40
题目描述
门打开了, 里面果然是个很大的厅堂。但可惜厅堂内除了中央的一张羊皮纸和一根精致的石笔,还有周围几具骷髅外什么也没有。 难道这就是王室的遗产? 小 FF 不信,他仔细阅读了羊皮纸上的内容后发现,里面书写的古代人一直没能解出的难题, 解除这道题目的人只要将答案用石笔写到这张羊皮纸上就能到达王室的宝藏室了。而当小 FF 拿起石笔后,刚刚打开的巨石门突然关上了。 这时小 FF 意识到原来那几具骷髅是在他之前到这里的冒险者,恐怕是因为没能破解这道题而困死在这里了。 小 FF 越想越害怕, 急忙联系到了你,为了能保命,他甚至愿意和你五五分……看来你不得不再次帮他了。 羊皮纸上的问题如下:
已知 x, y 为整数,且满足以下两个条件:
1. x, y ϵ [1..k], 且x,y,k ϵ Z;
2. (x^2 – xy – y^2)^2 = 1
给你一个整数 k, 求一组满足上述条件的 x, y 并且使得 x^2 + y^2 的值最大。
当小 F 得到答案后, 用石笔将答案书写在羊皮纸上,那么就能到达王室的遗产所在地了。
输入
一个整数 k
输出
输出文件仅一行,两个整数;
两个整数分别表示 x 和 y。x, y 之间用一个空格隔开。
样例输入
1995
样例输出
1597 987
数据范围限制
对于 30%的数据: 2<=k<=10^4.
对于 100%的数据: 2<=k<=10^18.
提示
Z是数学里面整数集合符号, 即x y k都是整数
Solution(P1775&P1936)
悄悄地打个表(其实就是在暴力枚举模拟的过程)
table_code
#include<bits/stdc++.h>
using namespace std;
unsigned long long k;
int main()
{
freopen("table.txt","w",stdout);
// cin>>k;
int maxans=,maxx=,maxy=;
for(k=;k<=;k++)
{ for(int x=;x<=k;x++)
for(int y=;y<=x;y++)
{
if((x+y)*(x-y)==x*y+||(x+y)*(x-y)==x*y-)
if(maxans<x*x+y*y)
{
maxans=max(maxans,x*x+y*y);
maxx=x;
maxy=y;
}
}
cout<<k<<" "<<maxx<<" "<<maxy<<endl;}
return ;
}
table.txt
k x y
table.txt
哈,这不是熟悉的斐波那契数列兄弟嘛
那么问题就变成了:
已知k,求x,y。
其中x,y属于斐波那契数列相邻了两项且x>y(P1936 水晶灯火灵 中是m<n)
使得k>=x&&k<x+y
//文末有证明!
Code(P1775)
#include<bits/stdc++.h>
using namespace std;
unsigned long long k;
void make()
{
int i=;
unsigned long long x=,y=,t,l=,r;
while(true)
{
t=x;
x=x+y;
y=t;
if(k>=x&&k<x+y)
{
cout<<x<<" "<<y;
return;
}
}
return;
}
int main()
{
// freopen("puzzle.in","r",stdin);
// freopen("puzzle.out","w",stdout);
cin>>k;
make();
return ;
}
/*
1. x, y sy [1..k], 且x,y,k sy Z;
2. (x^2 - xy - y^2)^2 = 1
给你一个整数 k,
求一组满足上述条件的 x, y
并且使得 x^2 + y^2 的值最大。 */
也可以利用打的表(修改了一下)
#include<bits/stdc++.h>
using namespace std;
unsigned long long k;
unsigned long long table[]={
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,
,,,,,,,,,,,,
,,,,,,,,,,
,,,,,,,,,
,,,,,,,,
,,};
int main()
{
// freopen("puzzle.in","r",stdin);
// freopen("puzzle.out","w",stdout);
cin>>k;
for(int i=;i<=;i++)
if(k>=table[i]&&k<table[i+])
{
cout<<table[i]<<" "<<table[i-];
break;
}
return ;
}
但是请注意,上面这种方法请在 工具 -> 编译选项 -> 代码生成/优化 -> 代码警告 中把“忽略所有警告信息” 设为“Yes”

Code(P1936)
#include<bits/stdc++.h>
using namespace std;
unsigned long long k;
void make()
{
int i=;
unsigned long long x=,y=,t,l=,r;
while(x<k*)
{
t=x;
x=x+y;
y=t;
if(k>=x&&k<x+y)
{
cout<<"m="<<y<<endl<<"n="<<x;
return;
}
}
return;
}
int main()
{
cin>>k;
make();
return ;
}
/*
1. x, y sy [1..k], 且x,y,k sy Z;
2. (x^2 - xy - y^2)^2 = 1
给你一个整数 k,
求一组满足上述条件的 x, y
并且使得 x^2 + y^2 的值最大。 */
证明
本文提供两种证明方法。敬请过目~
证明(P1775)
(x^2 - xy - y^2)^2
= (y^2 + xy - x^2)^2
= [(x+y)^2 - xy - 2*x^2]^2
=[(x+y)^2 - (x+y)*x - x^2]^2
由上式可知, 如果x, y 满足条件2, 那么x+y, y 也满足条件2。
那么Fibomacci 中小于等于k 的最大两个相邻的数即为试题所需的解。
证明(P1936)
记f(n,m)=(n^2-mn-m^2)^2
则有f(m+n,m)=[(m+n)^2-n(m+n)-n^2]^2=(m^2+mn-n^2)^2=(n^2-mn-m^2)^2=f(n,m)
易得f(1,1)=1
故1=f(1,1)=f(2,1)=f(3,2)=...
洛谷P1936 水晶灯火灵 P1775 古代人的难题_NOI导刊2010提高(02)【重题请做P1936】的更多相关文章
- 洛谷——P1775 古代人的难题_NOI导刊2010提高(02)&& P1936 水晶灯火灵(斐波那契数列)
P1775 古代人的难题_NOI导刊2010提高(02) P1936 水晶灯火灵 斐波那契数列 1.x,y∈[1…k],且x,y,k∈Z 2.(x^2-xy-y^2)^2=1 给你一个整数k,求一组满 ...
- 洛谷—— P1775 古代人的难题_NOI导刊2010提高(02)
P1775 古代人的难题_NOI导刊2010提高(02) 题目描述 门打开了,里面果然是个很大的厅堂.但可惜厅堂内除了中央的一张羊皮纸和一支精致的石笔,周围几具骷髅外什么也没有.难道这就是王室的遗产? ...
- luogu P1775 古代人的难题_NOI导刊2010提高(02)(斐波纳契+数学)
题意 已知x,y为整数,且满足以下两个条件: 1.x,y∈[1…k],且x,y,k∈Z 2.(x^2-xy-y^2)^2=1 给你一个整数k,求一组满足上述条件的x,y并且使得x^2+y^2的值最大. ...
- 洛谷P1774 最接近神的人_NOI导刊2010提高(02) [2017年6月计划 线段树03]
P1774 最接近神的人_NOI导刊2010提高(02) 题目描述 破解了符文之语,小FF开启了通往地下的道路.当他走到最底层时,发现正前方有一扇巨石门,门上雕刻着一幅古代人进行某种活动的图案.而石门 ...
- 洛谷P1774 最接近神的人_NOI导刊2010提高(02)(求逆序对)
To 洛谷.1774 最接近神的人 题目描述 破解了符文之语,小FF开启了通往地下的道路.当他走到最底层时,发现正前方有一扇巨石门,门上雕刻着一幅古代人进行某种活动的图案.而石门上方用古代文写着“神的 ...
- 洛谷 P1774 最接近神的人_NOI导刊2010提高(02)
题目描述 破解了符文之语,小FF开启了通往地下的道路.当他走到最底层时,发现正前方有一扇巨石门,门上雕刻着一幅古代人进行某种活动的图案.而石门上方用古代文写着“神的殿堂”.小FF猜想里面应该就有王室的 ...
- 洛谷——P1774 最接近神的人_NOI导刊2010提高(02)
https://www.luogu.org/problem/show?pid=1774 题目描述 破解了符文之语,小FF开启了通往地下的道路.当他走到最底层时,发现正前方有一扇巨石门,门上雕刻着一幅古 ...
- 洛谷P1776 宝物筛选_NOI导刊2010提高(02)(多重背包,单调队列)
为了学习单调队列优化DP奔向了此题... 基础的多重背包就不展开了.设\(f_{i,j}\)为选前\(i\)个物品,重量不超过\(j\)的最大价值,\(w\)为重量,\(v\)为价值(蒟蒻有强迫症,特 ...
- 【洛谷】【堆】P1801 黑匣子_NOI导刊2010提高(06)
[题目描述:] Black Box是一种原始的数据库.它可以储存一个整数数组,还有一个特别的变量i.最开始的时候Black Box是空的.而i等于0.这个Black Box要处理一串命令. 命令只有两 ...
随机推荐
- SpringBoot2 整合Kafka组件,应用案例和流程详解
本文源码:GitHub·点这里 || GitEE·点这里 一.搭建Kafka环境 1.下载解压 -- 下载 wget http://mirror.bit.edu.cn/apache/kafka/2.2 ...
- Coroutine 终止协程和异常处理
终止协程和异常处理 协程中未处理的异常会向上冒泡,传给 next 函数或 send 方法的调用方(即触发协程的对象) 终止协程的一种方式:发送某个哨符值,让协程退出.内置的 None 和 Ellips ...
- 吴恩达deepLearning.ai循环神经网络RNN学习笔记_看图就懂了!!!(理论篇)
前言 目录: RNN提出的背景 - 一个问题 - 为什么不用标准神经网络 - RNN模型怎么解决这个问题 - RNN模型适用的数据特征 - RNN几种类型 RNN模型结构 - RNN block - ...
- javascript 获取两点的像素距离
getPosLen(sdot, edot){//获取2点距离 /* 56 40 56 40 00 40 56 40 56 */ return parseInt(Math.sqrt(Math.pow(M ...
- VFP的数据策略:基础篇
VFP的数据策略:基础篇 概述 在VFP应用程序中,有很多方法可以访问非VFP数据(如SQL Server):远程视图.SQ LPassthrough.ADO.XML……本文件将审查不同机制的利弊,并 ...
- 推荐算法之因子分解机(FM)
在这篇文章我们将介绍因式分解机模型(FM),为行文方便后文均以FM表示.FM模型结合了支持向量机与因子分解模型的优点,并且能够用了回归.二分类以及排序任务,速度快,是推荐算法中召回与排序的利器.FM算 ...
- 忘记centos的root用户密码怎么办?
1 重置centos7管理员密码 1.1 重置centos7管理员密码的几个步骤 1)重启服务器后,在grub菜单界面,根据界面显示的提示信息,按 e 进入编辑模式.注意:是否开启selinux,重置 ...
- matplotlib如何显示中文
问题:matplotlib不能渲染中文 想设定为中文字体,网上搜索的方法几乎都是下面这样,已经把字体拷贝到了程序目录下了,然而并没有生效 plt.rcParams [ font.sans-serif' ...
- 浅谈 k8s ingress controller 选型
大家好,先简单自我介绍下,我叫厉辉,来自腾讯云.业余时间比较喜欢开源,现在是Apache APISIX PPMC.今天我来简单给大家介绍下 K8S Ingress 控制器的选型经验,今天我讲的这些内容 ...
- Android中自定义xml文件给Spinner下拉框赋值并获取下拉选中的值
场景 实现效果如下 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书.教程推送与免费下载. 实现 将布局改 ...