洛谷 P4317 花神的数论题 题解 数位dp

不用买机械臂!用Python+ROS仿真实现RGB-D物体抓取全流程(Gazebo/MoveIt教程) 本文详细介绍了如何利用Python和ROS仿真环境(Gazebo/MoveIt)实现RGB-D物体抓取全流程,无需购买昂贵机械臂硬件。从环境搭建、机械臂模型导入、深度视觉系统配置到MoveIt运动规划,提供完整的实战指南,特别适合个人开发者和学生团队进行机械臂抓取算法验证与开发。 阅读详情

花神的数论题

题目背景

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

题目描述

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

输入格式

一个正整数 NNN。

输出格式

一个数,答案模 100000071000000710000007 的值。

样例 #1

样例输入 #1

3

样例输出 #1

2

提示

对于 100%100\%100% 的数据,1≤N≤10151\le N\le 10^{15}1≤N≤1015。

算法:数位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;
        else
            return cnt1;
    }
    if (!bound && dp[pos][cnt1] != -1) // 读取记忆(doge
        return dp[pos][cnt1];
    int max_num; // 可枚举的该位的数的上界
    if (bound)
        max_num = a[pos];
    else
        max_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;
        else
            res = (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;
}
车辆TBOX科普 第7次 TBOX技术深度解析:硬件架构与核心组件详解 摘要: TBOX(车载远程信息处理单元)是智能网联汽车的核心组件,承担数据采集、通信连接与安全交互等关键功能。其硬件架构以主控单元为核心,采用ARM架构处理器(如NXP i.MX系列)实现高效能低功耗处理,搭配DDR4/LPDDR5内存保障性能,eMMC/UFS存储确保数据可靠性。设计中需平衡车规级可靠性(AEC-Q100)、EMC兼容性及成本控制,同时集成通信、定位与安全模块。未来趋势聚焦异构计算、先进制程及功能安全(ASIL-D)与信息安全融合,推动TBOX向边缘计算节点演进。该技术是汽车智能化转型的重 阅读详情

相关推荐

Qt 5.9.1 32位下,手把手搞定周立功CAN二次开发库的加载与配置(含常见错误排查)

本文详细介绍了在Qt 5.9.1 32位环境下配置周立功CAN二次开发库的完整流程,包括环境准备、项目配置、常见错误排查及性能优化建议。特别针对MinGW 32bit环境,提供了.pro文件的精准配置和DLL部署策略,帮助开发者快速解决库文件匹配、编译报错和运行时问题,实现高效的CAN总线通信开发。

weixin_28717431的博客 356

洛谷·bzoj ·花神的数论题

初见安~这里是两个传送门:洛谷P4317&bzoj P3209 Description 背景 众所周知,花神多年来凭借无边的神力狂虐各大 OJ、OI、CF、TC …… 当然也包括 CH 啦。 描述 话说花神这天又来讲课了。课后照例有超级难的神题啦…… 我等蒟蒻又遭殃了。 花神的题目是这样的 设 sum(i) 表示 i 的二进制表示中 1 的个数。给出一个正整数 N ,花神要问你 派...

樱狸✨愿携清风归来处 388

EGO-Planner文章解读(一)——论文原理和算法实现

详细解读egoplanner论文和代码

fegxg的博客 3986

P4317 花神的数论题(数位DP)

题目链接:花神的数论题 - 洛谷 分析:就是对于1~n中的每个数,把他二进制中含有的1的个位乘起来即可。n是小于1e15的,所以n的二进制位也不会超过70,所以说1~n中的所有数含有1的个数是1~70,所以对于k属于区间[1,70],我们可以用数位DP求出二进制数中含有1的个数为k的数的数目sum,这样k的贡献就是sum个k连乘,也就是k的sum次方,这样我们枚举每一个二进制表示中可能含有的1的个数就可以得到最终的贡献,而求每一个二进制表示中可能含有的1的个数就是一个基本的数位DP,我们只需要在数位D

AC__dream的博客 804

【校园网代理连接问题】已解决,“该设备或资源(Web 代理)未设置为接受端口“7890”上的连接“

我遇到这个问题很多次。每次都是vpn的问题,不止通俗意义上的梯子(clash之类的),还包括校园网vpn。点击“ 拨号和虚拟专用网络设置”中的“设置”, 关闭代理服务器。在打开vpn后或者关闭vpn后无法浏览网页,网页诊断显示“关闭“手动设置代理”中的“使用代理服务器”,关闭对应的本地代理即可。

聆雨。 1万+

用Obsidian搭建个人知识库:AI时代如何构建你的第二大脑

AI 时代,真正有价值的不只是获取知识,而是沉淀属于自己的知识体系。本文从 Obsidian 安装、目录设计、双向链接、插件推荐到 AI 联动、多端同步,手把手教你打造高效、可持续进化的个人知识库,让知识真正为你所用。🧠

XiaoqiangClub的博客 466

【洛谷P4317】花神的数论题

题目背景 众所周知,花神多年来凭借无边的神力狂虐各大 OJ、OI、CF、TC …… 当然也包括 CH 啦。 题目描述 话说花神这天又来讲课了。课后照例有超级难的神题啦…… 我等蒟蒻又遭殃了。 花神的题目是这样的:设 \(sum(i)\) 表示 \(i\) 的二进制表示中 \(1\) 的个数。给出一个正整数 \(N\) ,花神要问你 \(\prod_{i=1}^{N}sum(i)\) ,也...

weixin_30549657的博客 239

VEML7700环境光传感器原理图设计,已量产(光线传感器)

最近做便携显示设备的自动亮度调节模块,最终敲定了 VEML7700 这款数字光传感器 —— 一是它 0~120klx 的宽量程刚好覆盖 “暗室→户外强光” 的全场景,二是 Filtron™技术让它的光谱响应和人眼高度贴合,测出来的 “亮度” 更符合实际视觉感受,加上 O-Trim™技术把输出公差压到 10% 以内,省了不少后期校准的功夫。搭好电路后串口直接读 lx 数值,稳定性和精度都够,这篇聊聊这个模块的硬件设计细节。

不脱发的程序猿 599

洛谷【P4317】 花神的数论题(快速幂、组合数学)

数位DP,快速幂,组合数学。

2401_90042730的博客 1012

从 Integrated Configuration 到 Integration Flow,SAP PI/PO 老配置迁移的一次温和重构

很多还在运行 SAP PI/PO 的系统,Integration Directory 里都积累了不少 Integrated Configuration,也就是日常项目里常说的 ICO。它们可能稳定运行了多年,负责把采购订单、物料主数据、客户主数据、发票、发货通知从一个系统送到另一个系统。问题在于,ICO 这种对象很实用,却不够直观。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 95

自然语言处理NLP星空智能对话机器人系列:Gavin大咖 Transformer 101问答集 第一问

自然语言处理NLP星空智能对话机器人系列:Transformer 101问答 [让天下没有难学的Transformer] 你问我答系列之一 Gavin大咖第一问: Transformer中的可训练Queries、Keys和Values矩阵从哪儿来? 以上是智华解答,供同学们参考。 星空智能对话机器人系列博客 NLP星空智能对话机器人系列:第二次星空智能对话机器人Zoom线上演示安排 NLP星空智能对话机器人系列:StarSpace: Embed All The Things NLP星空智能对

大模型与Agent智能体 991

luogu P4317花神的数论题

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

m0_69663448的博客 960

「UG/NX」BlockUI 树列表(回调函数)

官方对树控件提供了21种回调函数,树的一些操作可以在这些回调函数中进行操作。

何曾参静谧的博客 1330

洛谷P4317 花神的数论题题解

摘要:题目要求计算1到N所有数的二进制1的个数乘积。通过数位DP思想,将二进制分解为多个2^n组合,利用杨辉三角统计不同1的个数出现的次数。预处理组合数后,按公式∏(i^dp[i])计算乘积,其中dp[i]表示二进制含i个1的数的个数。时间复杂度与二进制位数相关,适用于N≤1e15的大数据。代码实现包括组合数预处理、数位处理和快速幂计算,最终结果对1e7+7取模输出。

cwplh的博客 679

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

【LG4317】花神的数论题

【LG4317】花神的数论题 题面 洛谷 题解 设\(f_{i,up,tmp,d}\)表示当前在第\(i\)位,是否卡上界,有\(tmp\)个一,目标是几个一的方案数 最后将所有\(d\)固定,套数位\(dp\)的板子 然后快速幂乘起来就好了 代码 #include <iostream> #include <cstdio> #include <cstdli...

102

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

【Luogu】P4317 花神的数论题 (数位DP)

具体的,我们这里的特征可以定义为在二进制下含有 k 个 1 的数的个数,那么我们只需要求出所有可能 k 的个数即可,然后用个快速幂乘起来就是答案,为什么呢?所以考虑记忆化搜索,我们定义 dp[i][k][j] 为 处理了 i 位,且当前枚举的 sum(i) 为 k,之前已经有过 j 个 1 的结果。本题让我们求 sum(i) 的乘积,其中 i 属于 1 ~ N,sum(i) 代表二进制中 i 的 1 的个数。那么转化题意,我们数位DP是计算符合某些特征的数字的个数,那么本题中我们也是将答案拆分一个一个求。

qq_61422664的博客 355

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

P4317 花神的数论题

数位dp

Ajwallet 437

洛谷P4317 花神的数论题(数位DP)

题意:给你一个数N,求出[1,N]中所有的数的二进制中1的个数的连乘。 刚开始看到这道题DP状态都不太好找,但因为之前做过洛谷的另一道“同类分布”的题,后来就有了点思路。 因为这道题DP状态不太好定义,不太好保存状态,所以我们可以枚举1出现的所有次数,对应出现的个数,例如,1出现的次数为k,数位DP出[1,N]内所以1次数为k的数,设其总数为num,则对应答案就是knum。 #include&lt...

shamansi99的博客 329

洛谷 P4317 花神的数论题(数位dp)

用数位dp计算有 N以内的数字 有k 个 1的数字有多少个,然后快速幂。 数位dp 直接在二进制位上进行枚举。 坑点:1e7 + 7 不是素数,但数位dp 内部无须取模数值不会爆long long 代码: #include<bits/stdc++.h> using namespace std; typedef long long ll; const int maxn = 1e7 +...

qq_41997978的博客 236

洛谷P4317 花神的数论题 数位dp

给出sumisum_{i}sumi​是iii的二进制中111的个数,要求∏i=1nsumi\prod_{i=1}^nsum_{i}∏i=1n​sumi​,其中n≤1e15n\leq1e15n≤1e15。 注意到sumisum_{i}sumi​实际上最多只有logloglog个取值,直接枚举这里面的每一个值,也就是二进制111的个数在1−n1-n1−n中出现的次数,快速幂计算。 而求1−n1-n1−...

qq_40859782的博客 229

花神的数论题

P4317 花神的数论题,一道数位dp,但是我用了组合数

欢迎您的光顾awa 260

解题报告 (十四) 数位DP

数位DP解题报告

英雄哪里出来 6434

数位dp

数位dp 一类套路dp题 数位dp一般与数的大小无关,而与数的组成有关。 从高位枚举到低位,如果这一位与原数的同一位不同,且满足上限的限制,则后面可以随便填,可以用f数组来储存这个值,这也是为什么记忆化搜索时需要判断(! limit) 数位dp一般用记忆化搜索来实现,方便快捷。 f数组中的维度由题目给出的限制数量决定,相当套路 前导0的问题:如果前导0对答案有影响(如windy数和手机号...

dbp123123的博客 218

Luogu 4317 花神的数论题

披着数论题外衣的数位dp。 相当于数一数$[1,n]$范围内$1$的个数是$1,2,3,4,...log(n)$的数各有多少个,直接在二进制下数位dp。 然而我比较sb地把(1e7 + 7)当成了质数,其实数出来的数是要模$\phi(p)$的,然而数出来的数绝对不会超过$n$。 时间复杂度$O(log^{4}n + \sqrt{P})$。 Code: #include ...

dashu497731727的博客 126

DP,数论————洛谷P4317 花神的数论题(求1~n二进制中1的个数和)

玄学代码(是洛谷题解里的一位dalao小粉兔写的) //数位DP(二进制)计算出f[i]为恰好有i个的方案数。 //答案为∏(i^f[i]),快速幂解决。 #include<bits/stdc++.h> using namespace std; #define ll long long const int mod=10000007; ll n,ans=1...

avq94452的博客 419

【洛谷】4317:花神的数论题【数位DP】

P4317 花神的数论题 题目背景 众所周知,花神多年来凭借无边的神力狂虐各大 OJ、OI、CF、TC …… 当然也包括 CH 啦。 题目描述 话说花神这天又来讲课了。课后照例有超级难的神题啦…… 我等蒟蒻又遭殃了。 花神的题目是这样的:设sum(i)表示i的二进制表示中1的个数。给出一个正整数N,花神要问你∏i=1N​sum(i),也就是...

weixin_30321449的博客 231
上一篇: 洛谷 P2602 [ZJOI2010] 数字计数 题解 数位dp
下一篇: Codeforces Manthan Codefest 17 E. Salazar Slytherin‘s Locket 题解 数位dp
bbc_ouo
博客等级 码龄3年 2096粉丝 132原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值