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中的某一个比已存在的人中的小,就把这个人添加到 ...
随机推荐
- 我的Mac中毒了,病毒居然叫做MacPerformance
禁用 ReportCrash 直接干掉进程肯定不管用,从名字就知道这个进程会自动被触发,除非修改系统配置. Google 了一下,发现很简单,在 terminal 里执行 launchctl unlo ...
- android 简单的画图片
layout: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns: ...
- POJ2031 Building a Space Station【最小生成树】
题意: 就是给出三维坐标系上的一些球的球心坐标和其半径,搭建通路,使得他们能够相互连通.如果两个球有重叠的部分则算为已连通,无需再搭桥.求搭建通路的最小边长总和是多少. 思路: 先处理空间点之间的距离 ...
- TypeError: view must be a callable or a list/tuple in the case of include()
原文连接: http://www.imooc.com/qadetail/98920 我是这么写的就好了 from django.conf.urls import url from django.con ...
- Hibernate注解开发、注解创建索引
1.注解的目的 简化繁琐的ORM映射文件(*.hbm)的配置 2.JPA和hibernate的关系 JPA:java persistence API,JPA注解是JavaEE的标准和规范. 两者的关系 ...
- SpringMvc整合Mybatis并使用声明式事务
(1).引入相关依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId>druid< ...
- npm 无法安装 ionic 解决办法
一般从 node.js官网下载安装完之后,npm也会同时安装完. 如果通过 $ npm install -g cordova ionic 去安装,往往会失败.这个是由于GFW,很多插件下载不下来,还好 ...
- Python中的exec、eval使用实例
Python中的exec.eval使用实例 这篇文章主要介绍了Python中的exec.eval使用实例,本文以简洁的方式总结了Python中的exec.eval作用,并给出实例,需要的朋友可以参考下 ...
- Django中全局Context处理器
1.模板标签和模板变量 模板标签在{% %}中定义: {% if is_logged_in %} Thanks for logging in! {% else %} Please log in. {% ...
- Andrew Ng在coursera上的ML视频 知识点笔记(2)
一.由线性回归导出逻辑回归: 二.“一对多”算法解决多分类问题: 三.“过拟合”和“欠拟合”: (1)对线性回归加入正则项: (2)对逻辑回归加入正则项: (3)加入正则项之后的正规方程: