P4317 花神的数论题 动态规划?数位DP
2024-08-31 14:32:29
思路:数位$DP$
提交:5次(其实之前A过,但是调了调当初的程序。本次是2次AC的)
题解:
我们分别求出$sum(x)=i$,对于一个$i$,有几个$x$,然后我们就可以快速幂解决。
至于求个数用数位$DP$就好了。
#include<cstdio>
#include<iostream>
#include<cstring>
#define ull unsigned long long
#define ll long long
#define R register ll
using namespace std;
#define pause (for(R i=1;i<=10000000000;++i))
#define In freopen("NOIPAK++.in","r",stdin)
#define Out freopen("out.out","w",stdout)
namespace Fread {
static char B[<<],*S=B,*D=B;
#ifndef JACK
#define getchar() (S==D&&(D=(S=B)+fread(B,1,1<<15,stdin),S==D)?EOF:*S++)
#endif
inline ll g() {
R ret=,fix=; register char ch; while(!isdigit(ch=getchar())) fix=ch=='-'?-:fix;
if(ch==EOF) return EOF; do ret=ret*+(ch^); while(isdigit(ch=getchar())); return ret*fix;
} inline bool isempty(const char& ch) {return (ch<=||ch>=);}
inline void gs(char* s) {
register char ch; while(isempty(ch=getchar()));
do *s++=ch; while(!isempty(ch=getchar()));
}
} using Fread::g; using Fread::gs; namespace Luitaryi {
const int N=,M=1e7+;
ll n;
int len,num[N];
ll f[N][N];
inline int qpow(ll a,ll p) { R ret=; a%=M;
for(;p;p>>=,(a*=a)%=M) if(p&) (ret*=a)%=M; return ret;
}
inline ll dfs(int l,bool ul,int c,int d) {//l:长度,ul:上界标记,c:统计1的个数,d:所求一的个数(即我们此时令sum(x)=d)
if(!l) return c==d;
if(!ul&&~f[l][c]) return f[l][c];
R lim=(ul?num[l]:),cnt=;
for(R i=;i<=lim;++i)
cnt+=dfs(l-,ul&&i==lim,c+i,d);
return ul?cnt:f[l][c]=cnt;
}
inline int solve(ll n) { R ans=;
for(;n;n>>=) num[++len]=n&;
for(R i=;i<=len;++i)
memset(f,0xff,sizeof(f)),
ans=(ans*qpow(i,dfs(len,true,,i)))%M;
return ans;
}
inline void main() {
n=g(); printf("%d\n",solve(n));
}
}
signed main() {
Luitaryi::main(); return ;
}
2019.07.21
最新文章
- TCP/IP BOOKS
- CodeForces 743B Chloe and the sequence (递归)
- Oracle IF &; CASE语句
- Mongodb Manual阅读笔记:CH2 Mongodb CRUD 操作
- 判断移动端js代码
- SPOJ913 Query on a tree II
- jsonp实现原理详细介绍
- 十,选择cfee编辑器并学会调试程序。以及结束语。
- 树套树专题——bzoj 3110: [Zjoi2013] K大数查询 &;amp; 3236 [Ahoi2013] 作业 题解
- java基础学习总结01
- 完整的struts.xml文件骨架
- 洛谷 P1305 新二叉树
- vector中的find
- 获取安卓的SH1安全码
- 针对Oracle用户被锁的一些相关处理方法
- Nginx 11阶段的顺序处理
- HDU3718 Similarity KM
- StringUtils工具类常用方法汇总(截取、去除空白、包含、查询索引)
- 3D 特征点概述(2)
- CentOS下安装Vmtools