51nod 1379 索函数

Fib[0]=0,Fib[1]=1,Fib[n]=Fib[n-1]+Fib[n-2] if n>1.

定义索函数Sor(n)=Fib[0]| Fib[1] |Fib[2]|…|Fib[n].

给定整数n,要求计算Sor(n)%1,000,000,007(1e9+7).

 

Input
第1行:给出一个整数T,表示有T组数据。(1<=T<=10000)
第2行到T+1行,每行一个整数n。(0<=n<=10^10)
Output
对于每个测试用例,输出结果占一行。
Input示例
2
1
2
Output示例
1
1

思路:
  因为是或运算,那么将其Sor(n)转化为二进制,每一位上的值均应该为1,那么我们只需要求出二进制的位长,便可以求得Sor(n)。
  对于斐波那契数列数列有:

   

 

  此时求其以2为底的对数,无法去掉n次幂,很难进行进一步化简,我们继续考虑:

  当n趋近于无穷大时:

  的值趋近于0,

 

  即此时求出Sor(n)转化为二进制时的长度为:

log2(15(1+52)n)
log2(15(1+52)n)

   

 

  进行化简得:

  

 

  可以O(1)求出Sor(n)的位长len,通过快速幂求出 2^(len+1)的值后减去一得到Sor(n)的数值。

 

  蛮有意思的一道题目。

 

  

#include <stdio.h>
#include <math.h>
#define MAXSIZE 90
#define INF 0x3f3f3f3f
#define LL long longconst int mod = 1e9+7;double f[MAXSIZE];LL Pow(LL a,LL n)
{LL ans = 1;while(n){if(n & 1){ans = (ans*a)%mod;}a = (a*a)%mod;n >>= 1;}return ans%mod;
}LL Solve(LL n)
{LL ans,len;if(n < MAXSIZE){len = log(f[n])/log(2.0);}elselen = n*log((1+sqrt(5.0))/2.0)/log(2.0) - log(sqrt(5.0))/log(2.0);ans = Pow(2,len+1);return ans;
}int main()
{f[0] = 0;f[1] = 1;f[2] = 1;for(int i=3;i<MAXSIZE;i++){f[i] = f[i-1] + f[i-2];}int T;LL n;scanf("%d",&T);while(T--){scanf("%lld",&n);if(n==0){printf("0\n");continue;}LL ans = Solve(n);printf("%lld\n",ans-1);}return 0;
}
View Code

 

  

 

    

  

 

 

 

 


转载于:https://www.cnblogs.com/alan-W/p/8012810.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/467168.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

昨天小米股价大涨的背后:UWB芯片到底是个什么鬼?

小米10月12日发布了“一指连”小米UWB技术。小米称该技术赋予手机与智能设备空间感知能力&#xff0c;手机指向设备即可定向操控&#xff0c;使小米在“通往未来之路上再迈一步”。来源&#xff1a;腾讯自选股受此消息利好&#xff0c;截止10月12日收盘&#xff0c;小米集团港股…

取表单radio值时

取表单radio值时 在 js 中取值时&#xff0c;用 e.detail.value.xxx 或 e.detail.value["xxx"]&#xff0c;其中 xxx 为 name 属性值。posted on 2017-12-09 23:45 飞狐爷 阅读(...) 评论(...) 编辑 收藏 转载于:https://www.cnblogs.com/cyxxzjp/p/8013181.html

数钱问题

数钱 题目描述 按照中国的币制有 1元&#xff0c;5元&#xff0c;10元&#xff0c;20元&#xff0c;50元&#xff0c;100元 给出钱数n&#xff08;n能用int存储&#xff09;&#xff0c;输入最少多少张钱能补足n。 输入 k n 输出 钱的张数 样例输入 4 123 200 187…

当你使用微信和QQ的时候,请不要忘记ICQ这个伟大的公司!

距离 ICQ 创立已经 24 年了&#xff0c;仿佛已经跨越了一代人的年纪&#xff0c;而今&#xff0c;我们似乎无法在互联网上找到太多关于 ICQ 的信息。如果有人不知道 ICQ 的话&#xff0c;可以告诉你 ICQ 才是互联网通讯的鼻祖&#xff0c;而不是 QQ、MSN、微信、Facebook。ICQ …

新学年开始了

今天是正月十五&#xff0c;本是万家团圆的日子&#xff0c;而我却来到了济南&#xff0c;我的学校。独在异乡为异客&#xff0c;每逢佳节倍思亲。本应是艳阳高照的天气&#xff0c;却冷不丁的来了个倒春 寒&#xff0c;济南居然下起了大雪。找出一个寒假都没有穿的羽绒服&…

nyoj 71 独木舟上的旅行 贪心

独木舟上的旅行 时间限制&#xff1a;3000 ms | 内存限制&#xff1a;65535 KB难度&#xff1a;2描述进行一次独木舟的旅行活动&#xff0c;独木舟可以在港口租到&#xff0c;并且之间没有区别。一条独木舟最多只能乘坐两个人&#xff0c;且乘客的总重量不能超过独木舟的最大…

解决python中遇到的乱码问题

1. 解决中文乱码的一种可行方法 1 # -*- coding:utf-8 -*-2 from __future__ import unicode_literals3 4 import chardet5 6 7 def smart_decoder(raw_content, default_encoding_list("utf-8", "gb18030")):8 """9 将字符串解码成…

db 是个什么鬼?

最近在处理音频部分的内容&#xff0c;我们讨论一个音频的时候&#xff0c;会谈到声音的大小&#xff0c;就是「分贝」。Decibels,分贝这其中还涉及一个东西&#xff0c;就是放大器&#xff0c;声音经过放大器后&#xff0c;就会变成放大后的声音&#xff0c;这个是硬件放大&am…

原创--DataGrid自动分页例子,通过存储过程

通过存储过程来进行DataGrid自动分页&#xff0c;效率很高&#xff0c;可以进行百万和千万级的分页自己通过50万条记录测试&#xff0c;翻至任何页&#xff0c;需时小于一秒呵呵&#xff0c;仅供自己以后察看使用&#xff0c;所以代码写的不很规范所需的存储过程如下&#xff1…

常用正则表达式整理

一、校验数字的表达式 1 数字&#xff1a;^[0-9]*$ 2 n位的数字&#xff1a;^\d{n}$ 3 至少n位的数字&#xff1a;^\d{n,}$ 4 m-n位的数字&#xff1a;^\d{m,n}$ 5 零和非零开头的数字&#xff1a;^(0|[1-9][0-9]*)$ 6 非零开头的最多带两位小数的数字&#xff1a;^([1-9][…

我看完大连理工研究生的遗书之后

可能是因为年纪大的一丢丢&#xff0c;看到这类新闻会觉得难受&#xff0c;也可能是因为自己也是父亲了&#xff0c;想到这位同学父亲的情况更加受不了。然后回头想想自己这些年的经历&#xff0c;很多次也有过结束生命来解决问题的想法&#xff0c;每次到了最关键的时候&#…

nyoj91 阶乘之和

阶乘之和 时间限制&#xff1a;3000 ms | 内存限制&#xff1a;65535 KB难度&#xff1a;3描述给你一个非负数整数n&#xff0c;判断n是不是一些数&#xff08;这些数不允许重复使用&#xff0c;且为正数&#xff09;的阶乘之和&#xff0c;如91&#xff01;2!3!&#xff0c;…

面试官:如何写出让 CPU 跑得更快的代码?

前言代码都是由 CPU 跑起来的&#xff0c;我们代码写的好与坏就决定了 CPU 的执行效率&#xff0c;特别是在编写计算密集型的程序&#xff0c;更要注重 CPU 的执行效率&#xff0c;否则将会大大影响系统性能。CPU 内部嵌入了 CPU Cache&#xff08;高速缓存&#xff09;&#x…

bzoj 1058: [ZJOI2007]报表统计

Description 小Q的妈妈是一个出纳&#xff0c;经常需要做一些统计报表的工作。今天是妈妈的生日&#xff0c;小Q希望可以帮妈妈分担一些工 作&#xff0c;作为她的生日礼物之一。经过仔细观察&#xff0c;小Q发现统计一张报表实际上是维护一个可能为负数的整数数列&#xff0c;…

拼音输入法功能大比拼

使用电脑工作或在互联网大潮中冲浪的朋友都离不开输入法的使用&#xff0c;输入法种类繁多&#xff0c;让新接触电脑的朋友目不暇接&#xff0c;难以确定哪一款才是最适合的自己的输入法。 一、拼音走向主流 五笔逐渐衰落尽管目前市场上的输入法种类繁多&#xff0c;各种各样的…

循序渐进PYTHON3(十三) --8-- DJANGO之ADMIN

admin简单使用&#xff1a; 1.urls.py2.settings.py3.models.pyfrom django.db import modelsclassUserInfo(models.Model): uid models.AutoField(primary_keyTrue) user_name models.CharField(max_length30) email models.EmailField() memo models.TextField() img mo…

你见过出道即巅峰吗?

我不知道你们见过没有&#xff0c;反正我见过了。这个消息是我周五上班的时候收到的&#xff0c;这个是一位非电子专业转行嵌入式的同学&#xff0c;之前加我微信后&#xff0c;聊的不是很多&#xff0c;但是非常惊讶的是&#xff0c;刚刚毕业就拿到了一份非常不错的offer。但是…

Turing equation

问题 F: F.Turing equation 时间限制: 1 Sec 内存限制: 128 MB 提交: 19 解决: 1 [提交][状态][讨论版] 题目描述 The fight goes on,whether to store numbers starting with their most significant digit ortheir least significant digit. Sometimes this is alsocall…

vmware linux

从今天才开始linux的系统学习。在虚拟机里的linux-as-3不能上网&#xff0c; 记得好久以前就有这种问题。一直以为是在配置vmware时选的桥接方式有误。但是改后&#xff0c;也不能上网。怀疑根本就不能和路由器连通。首先确定物理连接&#xff0c;当在命令行下设好ip与netmask…

代码优化导致的奇葩问题

这个是今天在微信群里讨论的一个问题&#xff0c;先看图片点击查看大图代码流程大概是这个样子的点击查看大图查看 length 和 space1 的值&#xff0c;明显看到 length 小于 space1 的值&#xff0c;即使是这样小白都能搞懂流程的情况下&#xff0c;代码还是跑到else里面区执行…