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中的某一个比已存在的人中的小,就把这个人添加到 ...
随机推荐
- Kettle基本概念学习
一,理解开发环境与生产环境. 比如,在windows或mac下设计好流程之后,把该设计文件上传到linux集群的机器上执行.那么,在windows下进行的工作即为开发环境,任务具体在linxu机器上执 ...
- Newtonsoft.Json 两个Attribute含义
1.[JsonIgnore] 看名字就知道了,通过这个Attribute可以忽略序列化某个实体类字段 2.[JsonProperty("Font")] 设置序列化到json中的实际 ...
- CSS cursor 属性改变鼠标的样式
可能的值 值 描述 url 需使用的自定义光标的 URL. 注释:请在此列表的末端始终定义一种普通的光标,以防没有由 URL 定义的可用光标. default 默认光标(通常是一个箭头) auto 默 ...
- pyqt5的安装
第一步:需要安装:pip3 install pyqt5 安装工具:pip3 install pyqt5-tools 第二步:打开Pycharm,进入设置,添加外部工具 file-->sett ...
- 下拉选择框QCombox
下拉列表框样式如图: 字体列表框样式: import sys from PyQt5.QtWidgets import QApplication, QWidget, QComboBox, QFontCo ...
- PHP二叉树
<?php /******************************************************** * 我写的PHP都是从C语言的数据结构中演化而来********* ...
- Java9都快发布了,Java8的十大新特性你了解多少呢?
Java 9预计将于今年9月份发布,这是否会是一次里程碑式的版本,我们拭目以待.今天,我们先来复习一下2014年发布的Java 8的十大新特性. Java 8可谓是自Java 5以来最具革命性的版本了 ...
- Spring之JDBCTemplate学习
一.Spring对不同的持久化支持: Spring为各种支持的持久化技术,都提供了简单操作的模板和回调 ORM持久化技术 模板类 JDBC org.springframework.jdbc.core. ...
- tomcat参数调优
在做java开发时尤其是大型软件开发时经常会遇到内存溢出的问题,比如说OutOfMemoryError等.这是个让开发人员很痛苦.也很纠结的问题,因为我们有时不知道什么样的操作导致了这种问题的发生.所 ...
- 随机森林学习-2-sklearn
# -*- coding: utf-8 -*- """ RandomForestClassifier skleran的9个模型在3份数据上的使用. 1. 知识点: skl ...