2015 Benelux Algorithm Programming Contest I- Interesting Integers
题目大意:给你一个数字n(n<=1e9) ,让你求一个能包含这个数的斐波那契数列的第一项a
和第二项b,找出b最小的那个。
帮我复习了一下扩展欧几里得。。。。
思路:a,b,a+b,a+2b……我们能枚举出50项内,每一项的a和b的数量,然后就是从后往前解
二元一次方程。 其实以a为第一项,b为第二项的斐波那切数列公式为,a[ i ]=f[ i - 1 ] * x+f[ i ]*y。
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const ll inf=1e18;
ll fi[],se[],n,a,b,ans1,ans2,res1,res2;
ll exgcd(ll a,ll b,ll &x,ll &y)
{
if(b==)
{
x=; y=;
return a;
}
else
{
ll gcd,t; gcd = exgcd(b,a%b,x,y);
t=x; x=y; y=t-(a/b)*y;
return gcd;
}
}
bool work(ll fi,ll se,ll n,int id)
{
if(fi>n || se>n) return false;
ll x,y,gcd=exgcd(fi,se,x,y);
if(n%gcd!=) return false;
ll g=n/gcd;
x=x*g; y=y*g;
ll change1=fi/gcd;
ll change2=se/gcd;
if(x<)
{
ll cnt=(-x)/change2;
x+=cnt*change2;
y-=cnt*change1;
if(x<)
{
x+=change2;
y-=change1;
}
if(y<) return false;
}
else if(y<)
{
ll cnt=(-y)/change1;
x-=cnt*change2;
y+=cnt*change1;
if(y<)
{
x-=change2;
y+=change1;
}
if(x<) return false;
}
if(x<=y)
{
ll cnt=(y-x)/(change1+change2);
x+=cnt*change2;
y-=cnt*change1;
if(x>y || y<)
{
x-=change2;
y+=change1;
}
}
else
{
ll cnt=(x-y)/(change1+change2);
x-=cnt*change2;
y+=cnt*change1;
if(x>y)
{
x-=change2;
y+=change1;
}
if(x< || y<) return false;
}
if(x< || y< || x>y) return false;
res1=x; res2=y;
return true;
}
int main()
{
ll x,y;
fi[]=;se[]=;fi[]=;se[]=;
for(int i=;i<=;i++)
{
fi[i]=fi[i-]+fi[i-];
se[i]=se[i-]+se[i-];
}
int T; scanf("%d",&T);
while(T--)
{
scanf("%I64d",&n);
ans1=ans2=inf;
for(int i=;i>=;i--)
{
if(work(fi[i],se[i],n,i))
{
if(res2<ans2)
{
ans2=res2;
ans1=res1;
}
else if(res2==ans2 && res1<ans1)
{
ans2=res2;
ans1=res1;
}
}
}
printf("%I64d %I64d\n",ans1,ans2);
}
return ;
}
2015 Benelux Algorithm Programming Contest I- Interesting Integers的更多相关文章
- 2015 Benelux Algorithm Programming Contest E-Excellent Engineers
题目大意:有n个人,每个人都有三个物品,排名分别为a[ i ],b[ i ],b[ i ],现在要删掉其中的一些人 如果一个人x的三个物品的排名为a[ x ],b[ x ],b[ x ],若存在另一个 ...
- 2015 Benelux Algorithm Programming Contest (BAPC 15)E - Excellent Engineers
这题想了很久没思路,不知道怎么不sort维护二维的最小值 emmmm原来是线段树/树状数组,一维sort,二维当成下标,维护三维的最小值 #include<bits/stdc++.h> # ...
- 计蒜客 28319.Interesting Integers-类似斐波那契数列-递推思维题 (Benelux Algorithm Programming Contest 2014 Final ACM-ICPC Asia Training League 暑假第一阶段第二场 I)
I. Interesting Integers 传送门 应该是叫思维题吧,反正敲一下脑壳才知道自己哪里写错了.要敢于暴力. 这个题的题意就是给你一个数,让你逆推出递推的最开始的两个数(假设一开始的两个 ...
- Benelux Algorithm Programming Contest 2014 Final(第二场)
B:Button Bashing You recently acquired a new microwave, and noticed that it provides a large number ...
- Benelux Algorithm Programming Contest 2014 Final
// Button Bashing (bfs) 1 #include <iostream> #include <cstdio> #include <cstring> ...
- 2014 Benelux Algorithm Programming Contest (BAPC 14)E
题目链接:https://vjudge.net/contest/187496#problem/E E Excellent Engineers You are working for an agency ...
- 2020.3.14--训练联盟周赛 Preliminaries for Benelux Algorithm Programming Contest 2019
1.A题 题意:给定第一行的值表示m列的最大值,第m行的值表示n行的最大值,问是否会行列冲突 思路:挺简单的,不过我在一开始理解题意上用了些时间,按我的理解是输入两组数组,找出每组最大数,若相等则输出 ...
- 计蒜客 28317.Growling Gears-一元二次方程的顶点公式 (Benelux Algorithm Programming Contest 2014 Final ACM-ICPC Asia Training League 暑假第一阶段第二场 G)
G. Growling Gears 传送门 此题为签到题,直接中学的数学知识点,一元二次方程的顶点公式(-b/2*a,(4*a*c-b*b)/4*a):直接就可以得到结果. 代码: #include& ...
- 计蒜客 28315.Excellent Engineers-线段树(单点更新、区间最值) (Benelux Algorithm Programming Contest 2014 Final ACM-ICPC Asia Training League 暑假第一阶段第二场 E)
先写这几道题,比赛的时候有事就只签了个到. 题目传送门 E. Excellent Engineers 传送门 这个题的意思就是如果一个人的r1,r2,r3中的某一个比已存在的人中的小,就把这个人添加到 ...
随机推荐
- FastReport"Text"对象中的HTML标签介绍以及使用
"Text"对象可以理解一些简单的HTML标签.标签可位于对象中的文本.在默认情况下,标签是禁用的,要启用这些HTML标签,可选择对象上下文菜单中的“Allow HTML tags ...
- Linux配置Tomcat步骤mv apache-tomcat-7.0.82 tomcat
(一)安装JAVA1.检查java环境 java -version,不存在安装.2.yum -y list java* Loaded plugins: fastestmirror, langpacks ...
- 不修改加密文件名的勒索软件TeslaCrypt 4.0
不修改加密文件名的勒索软件TeslaCrypt 4.0 安天安全研究与应急处理中心(Antiy CERT)近期发现勒索软件TeslaCrypt的最新变种TeslaCrypt 4.0,它具有多种特性,例 ...
- python 设计及调试的一些小技巧
在“笨办法学习python”中介绍了一些设计函数以及调试技巧: 参考网址:http://www.jb51.net/shouce/Pythonbbf/latest/ex36.html If 语句的规则¶ ...
- 2017-2018-2 165X 『Java程序设计』课程 助教总结
2017-2018-2 165X 『Java程序设计』课程 助教总结 本学期完成的助教工作主要包括: 编写300道左右测试题,用于蓝墨云课下测试: 发布博客三篇:<2017-2018-2 165 ...
- Faster rcnn代码理解(3)
紧接着之前的博客,我们继续来看faster rcnn中的AnchorTargetLayer层: 该层定义在lib>rpn>中,见该层定义: 首先说一下这一层的目的是输出在特征图上所有点的a ...
- Linux的capability深入分析(1)【转】
转自:https://blog.csdn.net/wangpengqi/article/details/9821227 一)概述: )从2.1版开始,Linux内核有了能力(capability)的概 ...
- DataSnap ClientdataSet 三层中主从表的操作
非原创 摘自:http://hi.baidu.com/yagzh2000/blog/item/fc69df2cb9845de78b139946.html三层中主从表的操作(删除.新增.修改)一定要在 ...
- 转载:2.2 Nginx配置的通用语法《深入理解Nginx》(陶辉)
原文:https://book.2cto.com/201304/19625.html Nginx的配置文件其实是一个普通的文本文件.下面来看一个简单的例子.user nobody; worker_p ...
- convertToNodeSpace和convertToWorldSpace ---实际应用
游戏中经常会用到一些变换: 游戏中武器和角色在一个layer上,为了效率,会考虑将bullet, effect和 PhysicsParticle分别放到不用的层上,对应的层上使用batchnode来提 ...