jzoj3850-Fibonacci进制【斐波那契倍增】
正题
题目大意:https://jzoj.net/senior/#main/show/3850
题目大意
定义f(i)f(i)f(i)表示第i+1i+1i+1个斐波那契数
一个数转换成斐波那契进制后第iii位的0/10/10/1表示是否需要加上f(i)f(i)f(i),然后将1∼∞1\sim \infty1∼∞转换成斐波那契进制后依次输出在屏幕上,求前nnn个数字有几个111。
解题思路
我们要确定最后的那个数,lil_ili表示长度为iii的斐波那契进制数有多少个,显然有li=li−1+li−2l_i=l_{i-1}+l_{i-2}li=li−1+li−2。
nin_ini表示长度为iii的斐波那契进制数有多个111,有ni=∑j=1i−2nj+lin_i=\sum_{j=1}^{i-2}n_j+l_ini=∑j=1i−2nj+li。
然后我们可以确定最后数的长度,之后我们考虑确定每个位数。最后确定剩下那个数剩下部分的一的个数(暴力判断即可)。
codecodecode
#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const ll N=1e6+10;
ll s,l[N],n[N],sl[N],sn[N],ans,z,num=2;
int main()
{scanf("%lld",&s);if(s==0){printf("0");return 0;}if(s==1){printf("1");return 0;}if(s<=3){printf("2");return 0;}l[1]=l[2]=1;n[1]=n[2]=1;sl[0]=1;sl[1]=2;sl[2]=3;sn[1]=1;sn[2]=2;z=2;s-=3;ans+=2;while(++z){l[z]=l[z-2]+l[z-1];n[z]=l[z]+sn[z-2];sl[z]=l[z]+sl[z-1];sn[z]=n[z]+sn[z-1];if(s<l[z]*z) break;s-=l[z]*z;num+=l[z];ans+=n[z];}ll len=z,w=1;for(z=len-2;z>=1;z--){if(s>=sl[z-1]*len){num+=sl[z-1];s-=sl[z-1]*len;ans+=sn[z-1]+sl[z-1]*w;w++;}if(!s) break;}if(s){num++;l[len+1]=l[len]+l[len-1];for(int i=len;i>=len-s+1;i--)if(num>=l[i+1]) ans++,num-=l[i+1];}printf("%lld",ans);
}
jzoj3850-Fibonacci进制【斐波那契倍增】相关推荐
- 【递归 动态规划 备忘录法】Fibonacci数列(斐波那契数列)(C++)
一.什么是Fibonacci数列 斐波那契数列指的是这样一个数列:1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144- 用文字来说,就是从第3项开始,每一项都等于前两项 ...
- C语言案例-输出 Fibonacci 数列(斐波那契数列)的前 40 项
输出 Fibonacci 数列(斐波那契数列)的前 40 项 代码如下所示: 方法一: #include "stdio.h" void main() {int i,f1,f2,f3 ...
- HDU 1568 Fibonacci【求斐波那契数的前4位/递推式】
Fibonacci Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Proble ...
- Codeforces 446C. DZY Loves Fibonacci Numbers【斐波那契+线段树】
C. DZY Loves Fibonacci Numbers [题目描述] 传送门 [题解] 我们可以知道斐波那契数列有两个性质: ∑i=1nFi=Fn+2−F2\sum_{i=1}^{n} F_i= ...
- 【杭电多校2020】Fibonacci Sum【斐波拉契通项】【推式子】
题意:设FiF_iFi为斐波拉契数列,求 ∑i=0N(FiC)k\sum_{i=0}^N(F_{iC})^ki=0∑N(FiC)k 模109+910^9+9109+9 N,C≤1018,k≤10 ...
- JAVA--自制斐波那契数列输出
累了,写点简单的. 1 public class hello { 2 3 /** 4 * @param args 5 */ 6 public static void main(String[] arg ...
- 【小组专题三:斐波那契专题】斐波那契 与其20个性质 | 泽肯朵夫表示 | 卢卡斯数 与其8个性质 | 常系数二次线性齐次序列 | 模板与例题
斐波那契专题 斐波那契序列的定义 斐波那契序列的基本性质 卢卡斯数 卢卡斯数的基本性质 正整数的泽肯朵夫(Zeckendorf)表示 其他斐波那契的性质 常系数的二次线性齐次递归关系 斐波那契进制/斐 ...
- 斐波那契数列大数的压位c语言,HDU 1568 Fibonacci(大数前4位)
分析:x=1234567.求其前四位数: log10(x)=log10(1.234567)+6. 所以1.234567=10^(log10(x)-6). 1234 =(int) 10^(log10(x ...
- 剑指Offer——斐波那契数列
1.题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0).n<=39 2.代码实现 1 package com.baozi.offer; ...
最新文章
- C语言用char数组存储一串整数时的一个陷阱
- Posterior decompression
- 【抽奖直播】今日16:30,云信特邀部长大人给你抽6s!
- linux fedora kde桌面设置全局显示字体大小
- 计算机乘除法运算中部分积和余数的符号位选择与位移的关系
- linux发送数据包需要两次路由,linux – 在tracepath期间导致火星数据包(目前为止)的路由策略有多么破碎?...
- 《C++编程惯用法——高级程序员常用方法和技巧》——2.7 Const
- 计算机电子设计论文,计算机毕业设计电子信息毕业设计电子信息毕业论文
- 生物信息学之抗癌药物反应论文阅读三:ML+PDX
- VS2003下载地址
- 迷宫(二) 计蒜客--1596
- 06.图像识别与卷积神经网络------《Tensorflow实战Google深度学习框架》笔记
- java 访问 domino_java程序远程访问Domino数据库简例
- R语言正则表达式基础
- linux音源管理 二维表,Oracle【二维表管理:约束】
- 怎么把网页添加到公众号里
- 【GDOI2003】排列的编码 {康托展开+高精度}
- 世界各国(地区)LCID信息列表
- Chrome开发者工具-Elements
- Kam1n0能实现哪些功能?(1)