【数位DP】[LOJ10168] 恨7不成妻
还是数位DP...
状态:$f[x][val][sum]$表示当前第x位,当前数字为val,当前各位数字和为sum
观察到$val$,$sum$过大,很套路地模7即可...
每个状态存储三个要用到的值:
①cnt:表示满足条件的数字的个数
②s:表示满足条件的数字的和
③s_2:表示满足条件的数字的平方的和
关于转移:
①cnt的转移就和一般的数位DP一样
②s的转移:因为当前位搞到真实的数字里是$i*10^x$,而且这一位会被加上cnt次
③s_2的转移:这个有点烦,我们把$(x+y)^2$展开有$x^2+2xy+y^2$,其中$x=i*10^x$而y就是下一层搜索结果的s_2的值
具体细节看代码(看不懂的可以把取模操作去掉看一下主要是写完了我自己都看不懂了)
#include<bits/stdc++.h>
#define int long long
#define writeln(x) write(x),puts("")
#define writep(x) write(x),putchar(' ')
using namespace std;
inline int read(){
int ans=,f=;char chr=getchar();
while(!isdigit(chr)){if(chr=='-') f=-;chr=getchar();}
while(isdigit(chr)){ans=(ans<<)+(ans<<)+chr-;chr=getchar();}
return ans*f;
}void write(int x){
if(x<) putchar('-'),x=-x;
if(x>) write(x/);
putchar(x%+'');
}const int M = ,mod = 1e9+;
int l,r,T,a[M],p[M];
struct P{int cnt,s,s_2;}f[M][M][M];
P dfs(int x,int val,int sum,int lim){
if(!x)return (P){val&&sum,,};
if(!lim&&f[x][val][sum].cnt!=-)return f[x][val][sum];
register long up=lim?a[x]:;P ans=(P){,,};
for(int i=;i<=up;++i)
if(i!=){
P t=dfs(x-,(val*+i)%,(sum+i)%,lim&&i==a[x]);
ans.cnt=(ans.cnt+t.cnt)%mod;
ans.s=((i*p[x]%mod*t.cnt%mod+t.s)%mod+ans.s)%mod;
ans.s_2=(ans.s_2+(t.s_2+(*p[x]%mod*i%mod*t.s%mod+p[x]*p[x]%mod*i%mod*i%mod*t.cnt%mod)%mod)%mod)%mod;
}
if(!lim)f[x][val][sum]=ans;
return ans;
}
inline int Solve(int x){
int len=;
while(x)a[++len]=x%,x/=;
return dfs(len,,,).s_2;
}
signed main(){
memset(f,-,sizeof(f));p[]=;
for(register long i=;i<=;++i)p[i]=(p[i-]*)%mod;
register long T=read();
while(T--){
l=read(),r=read();
writeln(((Solve(r)-Solve(l-))%mod+mod)%mod);
}return ;
}
【数位DP】[LOJ10168] 恨7不成妻的更多相关文章
- 【数位DP】恨7不成妻
[数位DP]恨7不成妻 时间限制: 1 Sec 内存限制: 128 MB提交: 8 解决: 4[提交] [状态] [命题人:admin] 题目描述 单身!依然单身! 吉哥依然单身!DS级码农吉哥依 ...
- 吉哥系列故事——恨7不成妻(数位DP)
吉哥系列故事——恨7不成妻 http://acm.hdu.edu.cn/showproblem.php?pid=4507 Time Limit: 1000/500 MS (Java/Others) ...
- 吉哥系列故事——恨7不成妻(数位dp)
吉哥系列故事--恨7不成妻 传送门 Problem Description 单身! 依然单身! 吉哥依然单身! DS级码农吉哥依然单身! 所以,他生平最恨情人节,不管是214还是77,他都讨厌! 吉哥 ...
- hdu4507吉哥系列故事——恨7不成妻 (数位dp)
Problem Description 单身! 依然单身! 吉哥依然单身! DS级码农吉哥依然单身! 所以,他生平最恨情人节,不管是214还是77,他都讨厌! 吉哥观察了214和77这两个数,发现: ...
- HDU-4507 吉哥系列故事——恨7不成妻 数位DP
题意:给定区间[L, R]求区间内与7无关数的平方和.一个数当满足三个规则之一则认为与7有关:1.整数中某一位是7:2.整数的每一位加起来的和是7的整数倍:3.这个整数是7的整数倍: 分析:初看起来确 ...
- hdu_4507_吉哥系列故事——恨7不成妻(鬼畜数位DP)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=4507 题意:中文,不解释,注意的是求的是合法数字的平方和,即(a+b+c+……)^2 题解:数位DP, ...
- 吉哥系列故事――恨7不成妻 HDU - 4507 数位dp
思路 和普通的DP不一样的是 这里求的是满足条件的数的平方的和 而数位DP只跟数每位是什么密切相关 所以要开一个结构 (多加一个 数的和sum 和平方和qsum)存一下各个状态的和的情况 dp[p ...
- hdu-4507 吉哥系列故事——恨7不成妻 数位DP 状态转移分析/极限取模
http://acm.hdu.edu.cn/showproblem.php?pid=4507 求[L,R]中不满足任意条件的数的平方和mod 1e9+7. 条件: 1.整数中某一位是7:2.整数的每一 ...
- 2018.09.27 hdu4507吉哥系列故事——恨7不成妻(数位dp)
传送门 一道比较综合的数位dp. 维护三个值:[L,R][L,R][L,R] 区间中与7无关的数的数量,与7无关的数之和,与7无关的数的的平方和. 然后可以用第一个值推第二个,第一个和第二个值推第三个 ...
随机推荐
- NX二次开发-UFUN单对象选择对话框UF_UI_select_with_single_dialog
#include <uf.h> #include <uf_ui.h> ], void* user_data, UF_UI_selection_p_t select) { if ...
- Vue-cli中使用vConsole,以及设置JS连续点击控制vConsole按钮显隐功能实现
最近发现了一个鹅厂的仓库,实现起来比我这个方便[捂脸].https://github.com/AlloyTeam/AlloyLever 一.vue-cli脚手架中搭建的项目引入vConsole调试 1 ...
- [NOI.AC] candy
题意:求净利益. 思路: 其实我也不怎么懂题面. 不过这种题一般来说就是从最大的开始选. 所以考虑贪心. 那么代价如何处理呢?? 我们考虑两个序列同时选数,把代价每次记录到一个序列的和上,那么对于两次 ...
- jeecg下实现自动默认模糊查询
也许jeecg的作者深受SAP毒害吧,没考虑到广大使用JEECG的人群为SAP用户,及所开发的项目均为中小项目,无惧大数据模糊查询带来的功能影响. 经网友“&&康&&& ...
- python批量运行py文件
import os path="E:\\python" #批量的py文件路径 for root,dirs,files in os.walk(path): #进入文件夹目录 for ...
- finalize的作用
1. finalize的作用 finalize()是Object的protected方法,子类可以覆盖该方法以实现资源清理工作,GC在回收对象之前调用该方法. finalize()与C++中的析构函数 ...
- 2019-7-29-C#-在基类定义好方法让子类继承接口就能实现
title author date CreateTime categories C# 在基类定义好方法让子类继承接口就能实现 lindexi 2019-07-29 09:57:49 +0800 201 ...
- c++11 Thread库写多线程程序
一个简单的使用线程的Demo c++11提供了一个新的头文件<thread>提供了对线程函数的支持的声明(其他数据保护相关的声明放在其他的头文件中,暂时先从thread头文件入手吧),写一 ...
- Git 如何使用ssh上传或者同步/下载项目到github
上传本地代码及更新代码到GitHub教程 上传本地代码 第一步:去github上创建自己的Repository,创建页面如下图所示: 红框为新建的仓库的https地址 第二步: echo " ...
- [JZOJ6257] 【省选模拟8.9】修路
题目 题目大意 有一堆点,每个点都有其权值\(c_i\). 每次插入边\((u,v)\),\(u\)和\(1\)连通,\(v\)和\(1\)不连通.最后保证形成一棵树. 每次插入的时候询问\(1\)到 ...