[题目记录]一本通高手训练-数列

news/2024/10/12 12:58:35

题意

定义 n-数列 为满足以下条件的数列 \({a_i}\) :

  • 数列长度不小于 \(3\) , 且每个元素为 \(1\)\(n\) 的整数 .
  • 对于任意 \(k \ge 3\) , 有 $ (a_k-a_{k-2})(a_{k-1}-a_{k-2})<0$ .

给出 \(n\) , 求 n-数列 的个数 , 对 \(10^9+7\) 取模 .

\(n\le 10^{500000}\)

时空限制 \(1s,512MB\)


题解

第二个条件的易于理解的说法是 : 每个元素的大小都介于后两个元素之间 . 而对于每个限制 , 都有两种情况 , 即 $a_k>a_{k-2}>a_{k-1} $ 或 $a_k<a_{k-2}<a_{k-1} $ .

尝试手动模拟大小关系 , 发现这些大小关系的限制很紧 , 如图 :

逐个条件进行推导 , 当我们钦定 \(a_2<a_3\) , 就一定有 $ a_3>a_4$ , $ a_4 <a_5$ 等等 . 也就是说 , 一旦 \(a_2,a_3\) 的大小关系得以确定 , 所有的限制都只剩下一种情况 .

而观察 \(a_2<a_3\) 情况下的所有大小关系 , 发现这些关系中包含一个完整的链 : $ 5>4>1>2>4 $ . \(a_2 > a_3\) 同理 .

因此对于确定的 \(k\) 个不同数字 , 组成一个合法序列的方法有且仅有 \(2\) 种.

对于一个长度为 \(k\) 的 n-数列 , 相当于在 \(n\) 个数字里选互不相同的 \(k\) 个 , 每种选择方案对应两个序列 . 可得答案即为 :

\[2\times\sum_{k=3}^{n} C_n^k\\ =2\times(\sum_{k=1}^{n} C_n^k - C_n^0- C_n^1- C_n^2) \\ =2\times(2^n-1-n-\frac{n(n-1)}{2}) \]

最后 , 因为要取模 , 所以高精度是没有必要的 . 分别逐位读取处理 $n\mod p $ 与 $2^n \mod p $ 即可 .

代码
#include<bits/stdc++.h>
#define file(x) freopen(#x ".in","r",stdin),freopen(#x ".out","w",stdout)
#define int long long
#define INF 0x3f3f3f3f
#define INF64 1e18
using namespace std;constexpr int N=26;
constexpr int p=1e9+7;int qp(int x,int t){int res=1;while(t){if(t&1) res=res*x%p;x=x*x%p;t>>=1;}return res;
}string s;signed main(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cin>>s;int x=0,y=1;for(int i=0;i<s.length();i++) x=(x*10+s[i]-'0')%p,y=qp(y,10)*qp(2,s[i]-'0')%p;cout<<2*(y-1-x-x*(x-1)/2%p+2*p)%p;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

AOT漫谈专题(第二篇): 如何对C# AOT轻量级APM监控

一:背景 1. 讲故事 上一篇我们聊到了如何调试.NET Native AOT 程序,这是研究一个未知领域知识的入口,这篇我们再来看下如何对 Native AOT 程序进行轻量级的APM监控,当然这里的轻量级更多的是对 AOT 中的coreclr内容的挖掘。 二:如何轻量级APM监控 1. 一个简单的例子 用一个…

Windows平台软件打包工具(inno setup)的使用

目录Windows平台软件打包工具(inno setup)的使用inno setup中文版下载地址inno setup介绍软件特色Inno setup 打包教程 Windows平台软件打包工具(inno setup)的使用 inno setup中文版下载地址 正版下载:https://jrsoftware.org/isdl.php 中文版下载:链接: https://pan.bai…

Leetcode 1192. 查找集群内的关键连接

1.题目基本信息 1.1.题目描述 力扣数据中心有 n 台服务器,分别按从 0 到 n-1 的方式进行了编号。它们之间以 服务器到服务器 的形式相互连接组成了一个内部集群,连接是无向的。用 connections 表示集群网络,connections[i] = [a, b] 表示服务器 a 和 b 之间形成连接。任何服…

查看Github 发行版下载次数

比如我在Github上开源了软件,并且在Release里面发布了版本,但是Github release页面并没有下载统计次数的页面展示。下面列举的几个可以查看Release各个版本的下载量。1. https://somsubhra.github.io/github-release-stats/?username=hupo376787&repository=WeiboAlbumD…

K8S控制器理解-摘录自《云原生操作系统Kubernetes》

摘录自罗建龙等著的《云原生操作系统Kubernetes》,详细了解请查看原著。虽然控制器是Kubernetes比较复杂的组件,但是控制器这个概念本身,对我们来说并不陌生。我们生活中使用的洗衣机、冰箱、空调等,都要有控制器才能正常工作。 以下我们通过思考一个简易冰箱的设计过程,来…

ABAP面向对象视频课程 语法篇 共26节(SAP开发)

ABAP面向对象视频课程上线B站了,感兴趣的小伙伴可以去试看一下~ 课程地址:https://www.bilibili.com/cheese/play/ss33355?bsource=link_copy

【日记】强烈地意识到了:她对我而言,真的很重要

写在前面2164 字 | 情感内容 | 亲密关系 | HSP | 暴言注意正文最安静的一集。今天所有客户经理都出差去了。一楼只有我、柜面主管、前台和门卫四个人。两个小时没人说一句话。社恐天堂。工作上没什么好说的。中午明明人很少,但是食堂阿姨做了很多菜,就很奇怪。虽这么说,倒是…

ORCLE与MySQL的相互转化

1.情景展示 在实际开发中,不同的地方可能所需使用的数据库是不同的。 这就要求,我们开发的程序需要兼容不同的数据库,放到程序里面就是: 需要有不同类型的sqlMap文件。以既要兼容MySQL,也要兼容Oracle进行举例说明。 2.准备工作 第一步 根据已经写好的一套sql进行复制,然…