Chiaki Sequence Revisited HDU - 6304 lowbit找规律法
Chiaki would like to know the sum of the first n terms of the sequence, i.e. ∑i=1nai. As this number may be very large, Chiaki is only interested in its remainder modulo (109+7).
The first line contains an integer n (1≤n≤1018).
1
2
3
4
5
6
7
8
9
10
2
4
6
9
13
17
21
26
32
思路
先对aiai打表找一下规律会发现每个数字出现的个数有如下的关系
12345678⋮12131214⋮
1122314351627184⋮⋮
思考一下就会发现对于数字ii他出现的个数是ii转化为二进制后最后一位1在位置,也就是
log2(lowbit(i))+1log2(lowbit(i))+1,我们把这个函数记作f(i)=log2(lowbit(i))+1f(i)=log2(lowbit(i))+1
接下来我们要解决的问题是给你nn如何求出anan,我们记f(i)f(i)的前缀和为g(i)g(i),如果知道了n刚好大于下标为ii的前缀和就可以确定anan是哪一个数了,前缀和g(i)g(i)是一个递增的函数,所以我们可以用二分的方法求出ii的值,下面的问题是然后求得g(i)g(i)的表达式
关于f(i)f(i)有两性质
{f(2i+1)=1f(2i)=f(i)+1
{f(2i+1)=1f(2i)=f(i)+1
利用这两个性质我们可以对g(n)g(n)进行化简
g(2n)=∑i=12nf(i)
g(2n)=∑i=12nf(i)
=∑i=1nf(2i)+∑i=0n−1f(2i+1)
=∑i=1nf(2i)+∑i=0n−1f(2i+1)
=n+∑i=1n(f(i)+1)
=n+∑i=1n(f(i)+1)
=∑i=1nf(i)+2n
=∑i=1nf(i)+2n
=g(n)+2n
=g(n)+2n
即g(n)=g(n2)+ng(n)=g(n2)+n
也就是说我们如果知道下标ii我们就可以就可以通过递归求出前缀和,有了前缀和的求解方式我们就可以通过二分来找出数字nn所对应的anan的值了,也就是第anan项的前缀和
那么我们找到了anan又如何求出和SnSn呢,我们先观察函数g(an)g(an)的值
g(an)=11+22+31+43+51+62+71+84+91+102⋯⋯
12345678910⋯g(an)=1+2+1+3+1+2+1+4+1+2⋯
我们已经知道了最后一项也就是anan的值,那我们观察一下会发现一些等差数列
12436125102071428⋮91836⋯⋯⋯∗1∗2∗3
13579⋯∗126101418⋯∗2412202836⋯∗3⋮
也就是是每个数字出现的个数都符合一个等差数列的关系,设求出的anan的值为xx
那么每一个等差数列的项数就为x−2i−12i+1x−2i−12i+1,其中ii代表是哪一个数列,那么我们就可以求得数列的末项然后用等差数列求和公式就可以求出小于anan中出现的数的和了,然后每个序列又有一个出现次数,再乘上这个序列出现的次数就可以得到最后的答案了
注意的是二分答案的时候为了不TLE要在n2n2的附近查找,序列的规律是除第一项之后的数的规律,所以一开始n-1,最后的答案再加上这个1
Chiaki Sequence Revisited HDU - 6304 lowbit找规律法的更多相关文章
- 2018 杭电多校1 - Chiaki Sequence Revisited
题目链接 Problem Description Chiaki is interested in an infinite sequence $$$a_1,a_2,a_3,...,$$$ which i ...
- HDU 6304 Chiaki Sequence Revisited
题目链接 : http://acm.hdu.edu.cn/showproblem.php?pid=6304 多校contest1 Problem Description Chiaki is int ...
- HDU - 6304(2018 Multi-University Training Contest 1) Chiaki Sequence Revisited(数学+思维)
http://acm.hdu.edu.cn/showproblem.php?pid=6304 题意 给出一个数列的定义,a[1]=a[2]=1,a[n]=a[n-a[n-1]]+a[n-1-a[n-2 ...
- 【HDOJ6304】Chiaki Sequence Revisited(数学)
题意:给定一个序列a,定义a[1]=a[2]=1,a[n]=a[n-a[n-1]]+a[n-1-a[n-2]](n>=3),求该序列的前n项和是多少,结果对 1e9+7 取模 n<=1e1 ...
- [HDU6304][数学] Chiaki Sequence Revisited-杭电多校2018第一场G
[HDU6304][数学] Chiaki Sequence Revisited -杭电多校2018第一场G 题目描述 现在抛给你一个数列\(A\) \[ a_n=\begin{cases}1 & ...
- hdu 1005 Number Sequence(矩阵快速幂,找规律,模版更通用)
题目 第一次做是看了大牛的找规律结果,如下: //显然我看了答案,循环节点是48,但是为什么是48,据说是高手打表出来的 #include<stdio.h> int main() { ], ...
- B - Sequence II (HDU 5147)
Long long ago, there is a sequence A with length n. All numbers in this sequence is no smaller than ...
- hdu acm 2082 找单词
找单词 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- Bestcoder13 1003.Find Sequence(hdu 5064) 解题报告
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5064 题目意思:给出n个数:a1, a2, ..., an,然后需要从中找出一个最长的序列 b1, b ...
随机推荐
- LibLas学习笔记
LibLas学习笔记 las 什么是Las格式 LAS文件格式是数据用户之间交换三维点云数据的公共文件格式. 虽然这种格式主要用于交换激光雷达点云数据,但是它支持交换任何三维的x.y.z 数组. 这 ...
- 常用DOS指令备忘
1.删除整个目录,包括空目录 rd D:\管理\2012新同学练习\.svn /s/q /s 删除当前目录及子目录 /q 不询问直接删除 2.拷贝目录树 xcopy D:\管理\2012新同学练习 E ...
- Hybrid APP基础篇(四)->JSBridge的原理
说明 JSBridge实现原理 目录 前言 参考来源 前置技术要求 楔子 原理概述 简介 url scheme介绍 实现流程 实现思路 第一步:设计出一个Native与JS交互的全局桥对象 第二步:J ...
- 冲刺ing-7
第七次Scrum冲刺 队员完成的任务 队员 完成任务 吴伟华 Leangoo的看板截图,燃尽图 蔺皓雯 编写博客 蔡晨旸 进行测试 曾茜 界面设计 鲁婧楠 界面前后端 杨池宇 界面前后端 项目的发布说 ...
- YQCB冲刺周第二天
YQCB冲刺周第二天 1.实现用户记账的功能 2.实现用户头像的设置 3.实现个人设置的功能 遇到的问题: 记账的分类,数据库存取图片,页面跳转+超链接的使用 团队讨论的照片: ...
- P4语法(5) Package
Package 对于package这个概念,类似于将一个框架中各组成部件以一个规律进行打包,以正常运转. 基于一个架构去编写一个新的pipeline的时候,需要先了解初始化的时候需要提供那些东西,pa ...
- J2EE Oa项目上传服务器出现的乱码解决过程
(= =)搞了许久觉得有必要记下来.. 由于我本地的mysql都设置好了,但是服务器的又不能去改它 毕竟还有其他人要用- -: 所以只能是我建的时候去设置一下了, 首先先建数据库 ,表;; creat ...
- 【week10】psp
项目 内容 开始时间 结束时间 中断时间 净时间 2016/11/19(星期六) 写博客 吉林一日游规格说明书 10:30 15:10 20 260 2016/11/20(星期日) 看论文 磷酸化+三 ...
- laravel连接多个不同数据库的单例类
在連接多個不同數據庫時,需要寫多個連接,爲了簡化該操作,可以使用該基類,不同的數據庫只要建立好相對應的類繼承該類,就可以使用ORM模型進行操作了. class singletonInstance { ...
- LoadRunner脚本增强技巧之自动关联
为什么要做关联,原理很简单,录制脚本的时候,服务器会给用户一个唯一的认证码来进行操作,当再次回放脚本的时候服务器又会给一个全新的认证码,而录制好的脚本是写死的,还是拿老的认证码提交,肯定会导致脚本执行 ...