正题

题目大意: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−2​nj​+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进制【斐波那契倍增】相关推荐

  1. 【递归 动态规划 备忘录法】Fibonacci数列(斐波那契数列)(C++)

    一.什么是Fibonacci数列 斐波那契数列指的是这样一个数列:1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144- 用文字来说,就是从第3项开始,每一项都等于前两项 ...

  2. C语言案例-输出 Fibonacci 数列(斐波那契数列)的前 40 项

    输出 Fibonacci 数列(斐波那契数列)的前 40 项 代码如下所示: 方法一: #include "stdio.h" void main() {int i,f1,f2,f3 ...

  3. HDU 1568 Fibonacci【求斐波那契数的前4位/递推式】

    Fibonacci Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Proble ...

  4. Codeforces 446C. DZY Loves Fibonacci Numbers【斐波那契+线段树】

    C. DZY Loves Fibonacci Numbers [题目描述] 传送门 [题解] 我们可以知道斐波那契数列有两个性质: ∑i=1nFi=Fn+2−F2\sum_{i=1}^{n} F_i= ...

  5. 【杭电多校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 ...

  6. JAVA--自制斐波那契数列输出

    累了,写点简单的. 1 public class hello { 2 3 /** 4 * @param args 5 */ 6 public static void main(String[] arg ...

  7. 【小组专题三:斐波那契专题】斐波那契 与其20个性质 | 泽肯朵夫表示 | 卢卡斯数 与其8个性质 | 常系数二次线性齐次序列 | 模板与例题

    斐波那契专题 斐波那契序列的定义 斐波那契序列的基本性质 卢卡斯数 卢卡斯数的基本性质 正整数的泽肯朵夫(Zeckendorf)表示 其他斐波那契的性质 常系数的二次线性齐次递归关系 斐波那契进制/斐 ...

  8. 斐波那契数列大数的压位c语言,HDU 1568 Fibonacci(大数前4位)

    分析:x=1234567.求其前四位数: log10(x)=log10(1.234567)+6. 所以1.234567=10^(log10(x)-6). 1234 =(int) 10^(log10(x ...

  9. 剑指Offer——斐波那契数列

    1.题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0).n<=39 2.代码实现 1 package com.baozi.offer; ...

最新文章

  1. C语言用char数组存储一串整数时的一个陷阱
  2. Posterior decompression
  3. 【抽奖直播】今日16:30,云信特邀部长大人给你抽6s!
  4. linux fedora kde桌面设置全局显示字体大小
  5. 计算机乘除法运算中部分积和余数的符号位选择与位移的关系
  6. linux发送数据包需要两次路由,linux – 在tracepath期间导致火星数据包(目前为止)的路由策略有多么破碎?...
  7. 《C++编程惯用法——高级程序员常用方法和技巧》——2.7 Const
  8. 计算机电子设计论文,计算机毕业设计电子信息毕业设计电子信息毕业论文
  9. 生物信息学之抗癌药物反应论文阅读三:ML+PDX
  10. VS2003下载地址
  11. 迷宫(二) 计蒜客--1596
  12. 06.图像识别与卷积神经网络------《Tensorflow实战Google深度学习框架》笔记
  13. java 访问 domino_java程序远程访问Domino数据库简例
  14. R语言正则表达式基础
  15. linux音源管理 二维表,Oracle【二维表管理:约束】
  16. 怎么把网页添加到公众号里
  17. 【GDOI2003】排列的编码 {康托展开+高精度}
  18. 世界各国(地区)LCID信息列表
  19. Chrome开发者工具-Elements
  20. Kam1n0能实现哪些功能?(1)

热门文章

  1. 一键对频对讲机好吗_对讲机的基础知识你都知道多少呢?
  2. Java开发面试高频考点学习笔记(每日更新)
  3. [Java基础]Stream流终结操作之forEachcount
  4. numpy.exp()简单理解
  5. 数据结构与算法--复杂链表的复制
  6. 数据结构与算法--代码完整性案例分析
  7. python常用字符串方法调用语法_Python3常用的字符串方法
  8. 分析股票大数据_Python大数据分析量学祖师爷网站数据
  9. Java ArrayList的实现原理详解
  10. CF196E Opening Portals