洛谷 P4317 花神的数论题

花神的数论题

题目背景

众所周知,花神多年来凭借无边的神力狂虐各大 OJ、OI、CF、TC …… 当然也包括 CH 啦。

题目描述

话说花神这天又来讲课了。课后照例有超级难的神题啦…… 我等蒟蒻又遭殃了。 花神的题目是这样的:设 sum ( i ) \text{sum}(i) sum(i) 表示 i i i 的二进制表示中 1 1 1 的个数。给出一个正整数 N N N ,花神要问你 ∏ i = 1 N sum ( i ) \prod_{i=1}^{N}\text{sum}(i) i=1Nsum(i) ,也就是 sum ( 1 ) ∼ sum ( N ) \text{sum}(1)\sim\text{sum}(N) sum(1)sum(N) 的乘积。

输入格式

一个正整数 N N N

输出格式

一个数,答案模 10000007 10000007 10000007 的值。

样例 #1

样例输入 #1

3

样例输出 #1

2

提示

对于 100 % 100\% 100% 的数据, 1 ≤ N ≤ 1 0 15 1\le N\le 10^{15} 1N1015

算法:数位dp

代码

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;const int mod = 1e7 + 7;int dp[56][56];                                     // dp记录[pos][cnt1]状态下对答案的贡献
int a[56];                                          // a[]记录二进制串
int dfs(int pos, int cnt1, bool bound, bool lead_0) // pos为此时的位置,cnt1为前面1的数量,bound表示前面每一位是否都是上界,lead_0表示是否前面全是0
{if (pos == 0) // 枚举完每一位时返回{if (lead_0 == 1) // 如果此时lead_0为1,说明该数为0,则返回1(即返回无效贡献)return 1;elsereturn cnt1;}if (!bound && dp[pos][cnt1] != -1) // 读取记忆(dogereturn dp[pos][cnt1];int max_num; // 可枚举的该位的数的上界if (bound)max_num = a[pos];elsemax_num = 1;int res = 1;for (int i = 0; i <= max_num; i++){if (lead_0 && i == 0)res = (1LL * res * dfs(pos - 1, 0, bound && (i == a[pos]), 1)) % mod;elseres = (1LL * res * dfs(pos - 1, cnt1 + (i == 1), bound && (i == a[pos]), 0)) % mod;}if (!bound && !lead_0) // 没在边界时,记录下该状态对应的答案,记忆化dp[pos][cnt1] = res;return res;
}
int solve(ll x)
{memset(dp, -1, sizeof(dp)); // 将dp数组初始化为-1,表示对应状态的答案目前还未计算出int len = 0;while (x){a[++len] = x % 2;x /= 2;}return dfs(len, 0, 1, 1);
}
int main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);ll x;cin >> x;cout << solve(x);return 0;
}

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

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

相关文章

Linux(八) 进程间通信

目录 一、什么进程间通信 1.1 进程间通信的目的 1.2 进程间通信的概念 1.3 进程间通信的分类 二、 管道/匿名管道(pipe) 2.1 什么是管道 2.2 管道的创建 2.3 站在文件描述符角度-深度理解管道 2.4 站在内核角度-管道本质 2.5 匿名管道的读写 2.6 匿名管道的读写规则 …

EIP-4844对Polygon的意义

1. 引言 Dencun 升级引入了L2新资源&#xff0c;并降低了与calldata相关的交易手续费。 本文要点为&#xff1a; EIP-4844 引入了 blobspace —— 一种用于高效管理大型二进制对象 (large binary objects&#xff0c;BLOB) 的数据库存储概念。Blobs 将降低rollups的交易成本…

运动耳机怎么选?五款新手必买的运动耳机盘点

运动耳机是专为运动爱好者设计的耳机&#xff0c;轻巧便携&#xff0c;佩戴稳固。无论你在跑步、健身还是骑行&#xff0c;它都能为你带来优质的音乐体验。那如何选择一款合适的运动耳机呢&#xff1f;这里&#xff0c;我结合自己和身边朋友平时选购经验&#xff0c;整理了一些…

编程实战:自己编写HTTP服务器(系列5:执行后台shell命令)

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 系列入口&#xff1a;编程实战…

单片机负电压

在电子电路中我们常常需要使用负电压&#xff0c;比如说我们在使用运放的时候常常需要建立一个负电压。下面就简单的以正5V电压到负电压5V为例说一下它的电路。 通常需要使用负电压时一般会选择使用专用的负压产生芯片&#xff0c;但这些芯片都比较贵&#xff0c;比如电荷泵原理…

P1229 遍历问题

题目描述 我们都很熟悉二叉树的前序、中序、后序遍历&#xff0c;在数据结构中常提出这样的问题&#xff1a;已知一棵二叉树的前序和中序遍历&#xff0c;求它的后序遍历&#xff0c;相应的&#xff0c;已知一棵二叉树的后序遍历和中序遍历序列你也能求出它的前序遍历。然而给…

剪辑师创作必备声音素材,BGM背景音效素材合集1万款

一、素材描述 本套音效包含了全面丰富的声音效果&#xff0c;如动物、运输、人群、天气、航空、军事、Foley声音等&#xff0c;以及世界各地的场景声效等&#xff0c;可能是同类音效中最为全面的&#xff0c;共由三套声音素材组合而成&#xff0c;1、熊猫背景音乐3800首&#…

什么是单线服务器?

单线服务器主要是指只有一条物理线路连接到服务器的服务器&#xff0c;其中所有的数据与用户的请求都必须通过这条线路进行传输&#xff0c;由于线路只有一条&#xff0c;所以对于服务器的性能和可扩展性方面会有着一定的限制。 单线服务器和多线服务器进行比较的话&#xff0c…

宁静致远(“静”)

宁静致远是一个成语&#xff0c;读音为nng jng zh yuǎn&#xff0c;意思是只有心境平稳沉着、专心致志&#xff0c;才能厚积薄发、 有所作为。出自《淮南子:主术训》。 出处 宁静致远张铭篆刻 此句最早出自西汉初年道家刘安的《淮南子:主术训》&#xff0c;蜀汉丞相诸葛亮的…

5年增100倍6秒卖1瓶酒,酣客的“FFC模式”是什么

酣客酱酒销售模式&#xff0c;白酒FFC模式&#xff0c;白酒新零售模式设计 坐标&#xff1a;厦门&#xff0c;我是易创客肖琳 深耕社交新零售行业10年&#xff0c;主要提供新零售系统工具及顶层商业模式设计、全案策划运营陪跑等。 不知从何时起&#xff0c;营销圈开始有这么一…

Verilog 实现 i2c 协议

在时钟&#xff08;SCL&#xff09;为高电平的时候&#xff0c;数据总线&#xff08;SDA&#xff09;必须保持稳定&#xff0c;所以数据总线&#xff08;SDA&#xff09;在时钟&#xff08;SCL&#xff09;为低电平的时候才能改变。 在时钟&#xff08;SCL&#xff09;为高电平…

诸葛智能携手五大银行,以数据驱动的营销中台带来可预见增长

对于银行来说&#xff0c;客户是赖以生存的基础&#xff0c;也是保持活力的关键。尤其是大数据、人工智能等新兴技术的推动下&#xff0c;通过数据赋能产品升级和服务创新&#xff0c;深挖客户潜能&#xff0c;更是助推银行快步迈入高质量发展的新阶段。 在银行加速拥抱新质生…

文档分类DPCNN简介(pytorch实现)

文档分类DPCNN简介 DPCNN简介 模型结构区域嵌入等长卷积1/2池化DPCNN模型代码实现 DPCNN简介 论文中提出了一种基于 word-level 级别的网络-DPCNN&#xff0c;由于 TextCNN 不能通过卷积获得文本的长距离依赖关系&#xff0c;而论文中 DPCNN 通过不断加深网络&#xff0c;可以…

ATA-2021B高压放大器在光纤超声传感器中的应用

实验名称&#xff1a;超声传感性能研究 测试目的&#xff1a; 光纤马赫-曾德尔干涉仪是一种灵敏度高、结构灵活的传感结构。当在MZI上施加超声波信号时&#xff0c;会影响所涉及的干涉光之间的光程差&#xff0c;并导致干涉光谱的漂移。由于模式耦合是基于MZI的光纤传感器的关键…

脑中风也会出现眩晕?快速识别中风,一定要牢记这些!

眩晕是许多人都会经历的不适感&#xff0c;发作时仿佛整个世界都在旋转&#xff0c;可能还伴随着站立不稳、脚步虚浮、恶心等症状。然而&#xff0c;你可能不知道的是&#xff0c;这些症状在某些情况下可能是脑中风的前兆。如果不及时关注并采取相应措施&#xff0c;一旦发展为…

Failed to register @ServerEndpoint class

springboot集成websocket启动异常信息 java.lang.IllegalStateException: Failed to register ServerEndpoint class: springboot集成websocket引用依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter…

比特币能否跨过量子时代的这道槛?(2/2)

在上一篇文章《比特币能否跨过量子时代的这道槛&#xff1f;&#xff08;1/2&#xff09;》里说到&#xff0c;比特币要进入量子时代&#xff0c;在技术上必须对加密算法进行升级&#xff0c;而改变比特币的加密基础需要进行硬分叉&#xff0c;这一过程不仅技术复杂&#xff0c…

【算法】二分查找——在排序数组中查找元素的第一个和最后一个位置

本节博客主要是通过“在排序数组中查找元素的第一个和最后一个位置”总结关于二分算法的左右界代码模板&#xff0c;有需要借鉴即可。 目录 1.题目2.二分边界算法2.1查找区间左端点2.1.1循环条件2.1.2求中点的操作2.1.3总结 2.2查找区间右端点2.1.1循环条件2.1.2求中点的操作2.…

O2OA平台流程催办怎么做

O2OA平台设计了灵活的消息提醒数据交互方式&#xff0c;开发者可以根据自己的需要&#xff0c;来消费消息提醒数据&#xff0c;也可以将消息提醒数据接入到Kafka消息中间件来实现消息的准实时提醒。本篇主要介绍如何在O2OA服务器中设置流程的催办提醒消息。 催办提醒服务&#…

centos无法联网解决方案(9步完成

1.打开终端&#xff0c;输入 su - root 进入到管理员模式&#xff08;-的前后都有空格哈&#xff09; 切换后&#xff0c;显示的就是root... 2.. &#xff0c;输入命令ip addr 2. 切换当前目录 cd /etc/sysconfig/network-scripts/ 3.输入命令&#xff0c;打开文件 vi /etc…