Day9 - J - 吉哥系列故事——恨7不成妻 HDU - 4507
依然单身!
吉哥依然单身!
DS级码农吉哥依然单身!
所以,他生平最恨情人节,不管是214还是77,他都讨厌!
吉哥观察了214和77这两个数,发现:
2+1+4=7
7+7=7*2
77=7*11
最终,他发现原来这一切归根到底都是因为和7有关!所以,他现在甚至讨厌一切和7有关的数!
什么样的数和7有关呢?
如果一个整数符合下面3个条件之一,那么我们就说这个整数和7有关——
1、整数中某一位是7;
2、整数的每一位加起来的和是7的整数倍;
3、这个整数是7的整数倍;
现在问题来了:吉哥想知道在一定区间内和7无关的数字的平方和。
Input输入数据的第一行是case数T(1 <= T <= 50),然后接下来的T行表示T个case;每个case在一行内包含两个正整数L, R(1 <= L <= R <= 10^18)。
Output请计算[L,R]中和7无关的数字的平方和,并将结果对10^9 + 7 求模后输出。Sample Input
3
1 9
10 11
17 17
Sample Output
236
221
0 思路:还是数位DP,套用模板,求的是平方和,记录其后数位满足条件的个数即可,比如233, 234, 235满足,则平方和为(200+33)^2+(200+34)^2+(200+35)^2 = 3*200^2 + 2*200*(33+34+35)+33^2+34^2+35^2,记录下每次的和与平方和维护即可
typedef long long LL;
typedef pair<LL, LL> PLL; const int MOD = 1e9+; struct Node {
LL num, sum, ssum;
} dp[][][]; LL a[], p[]; Node dfs(int pos, int pre, int presum, bool limit) {
if(pos == -) {
Node ret;
ret.num = (pre != && presum != );
ret.sum = ret.ssum = ;
return ret;
}
if(!limit && dp[pos][pre][presum].num != -) return dp[pos][pre][presum];
int up = limit?a[pos]:;
Node ans;
ans.num = ans.sum = ans.ssum = ;
for(int i = ; i <= up; ++i) {
if(i == ) continue;
Node nex = dfs(pos-, (pre+i)%, (presum*+i)%, limit&&i==a[pos]);
if(nex.num == ) continue;
ans.num = ((ans.num + nex.num) % MOD + MOD) % MOD;
ans.sum = ((ans.sum + nex.sum + (p[pos]*i)%MOD*nex.num) % MOD + MOD) % MOD;
ans.ssum = ((ans.ssum + nex.ssum + ((*p[pos]*i) % MOD)*nex.sum) % MOD + MOD) % MOD;
ans.ssum = ((ans.ssum + (p[pos]*nex.num)%MOD * p[pos] % MOD *i*i) % MOD + MOD) % MOD;
}
if(!limit) dp[pos][pre][presum] = ans;
return ans;
} LL solve(LL n, LL m) {
int pos = ;
while(n) {
a[pos++] = n % ;
n /= ;
}
LL t1 = dfs(pos-, , , true).ssum;
pos = ;
while(m) {
a[pos++] = m % ;
m /= ;
}
t1 = dfs(pos-, , , true).ssum - t1;
return (t1%MOD+MOD)%MOD;
} void run_case() { LL n, m;
cin >> n >> m;
cout << solve(n-, m) << "\n";
} int main() {
ios::sync_with_stdio(false), cin.tie();
int t;
cin >> t;
for(int i = ; i < ; ++i)
for(int j = ; j < ; ++j)
for(int k = ; k < ; ++k)
dp[i][j][k].num = -;
p[] = ;
for(int i = ; i < ; ++i)
p[i] = (p[i-]*)%MOD;
while(t--)
run_case();
return ;
}
Day9 - J - 吉哥系列故事——恨7不成妻 HDU - 4507的更多相关文章
- 吉哥系列故事――恨7不成妻 HDU - 4507
题目: 单身! 依然单身! 吉哥依然单身! DS级码农吉哥依然单身! 所以,他生平最恨情人节,不管是214还是77,他都讨厌! 吉哥观察了214和77这两个数,发现: 2+1+4=7 7+7=7*2 ...
- 吉哥系列故事――恨7不成妻 HDU - 4507 数位dp
思路 和普通的DP不一样的是 这里求的是满足条件的数的平方的和 而数位DP只跟数每位是什么密切相关 所以要开一个结构 (多加一个 数的和sum 和平方和qsum)存一下各个状态的和的情况 dp[p ...
- J - 吉哥系列故事――恨7不成妻
#include "cstdio" #include "math.h" #include "cstring" #define mod 100 ...
- [HDU4507]吉哥系列故事——恨7不成妻
[HDU4507]吉哥系列故事--恨7不成妻 试题描述 单身!依然单身!吉哥依然单身!DS级码农吉哥依然单身!所以,他生平最恨情人节,不管是214还是77,他都讨厌!吉哥观察了214和77这两个数,发 ...
- 吉哥系列故事——恨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这两个数,发现: ...
- B - 吉哥系列故事——恨7不成妻
单身! 依然单身! 吉哥依然单身! DS级码农吉哥依然单身! 所以,他生平最恨情人节,不管是214还是77,他都讨厌! 吉哥观察了214和77这两个数,发现: 2+1+4=7 7+7=72 77=71 ...
- HDU - 4507 - 吉哥系列故事——恨7不成妻(数位DP,数学)
链接: https://vjudge.net/problem/HDU-4507 题意: 单身! 依然单身! 吉哥依然单身! DS级码农吉哥依然单身! 所以,他生平最恨情人节,不管是214还是77,他都 ...
随机推荐
- 三天的Python课程
基础很sb但必须熟练掌握: 第一天就是Python的简单介绍与简单的接触.基本都是概念性的东西,需要知道一个非常便捷的IDE工具:pycharm,以后的编程就靠它了.还有就是%s和%d的格式化输出.运 ...
- 【代码总结】PHP面向对象之抽象类
一.什么是抽象方法? 一个方法如果没有方法体(不使用"{}",直接使用分号结束的方法,才是没有方法体的方法),则这个方法就是抽象方法 1.声明一个方法,不使用{},而直接分号结束 ...
- kongdashboard
apiVersion: v1kind: Servicemetadata: name: kong-dashboard namespace: kongspec: type: NodePort po ...
- 【原】从浏览器数据一个URL的全过程
1.根据域名到DNS找到IP 2.根据IP建立TCP三次握手连接 3.连接成功发出http请求 4.服务器响应http请求 5.浏览器解析html代码并请求html中的静态资源(js/css) 6.关 ...
- 转载和补充:Oracle中的一些特殊字符
oracle通配符,运算符的使用 用于where比较条件的有: 等于:=.<.<=.>.>=.<> 包含:in.not in exists.not exists 范 ...
- Android 短信模块分析(七) MMS数据库定义及结构整理
一. mmssms.db 数据库mmssms.db中表的定义见表4.1至4.18所示: 表4.1 addr(彩信地址) 字段名 类型 描述 备注 _id INTEGER PRIMARY_KEY 主键I ...
- 洛谷 P3009 [USACO11JAN]利润Profits
嗯... 题目链接:https://www.luogu.org/problemnew/show/P3009 这是DP的另一个功能,求最大子段和(最大子段和模板:https://www.luogu.or ...
- PB specified database is invalid
拷贝资料库到其他机器,可以重新配置ODBC ,如果还是报错,建议删除log .
- 数据库先系统与原理第三章笔记:数据库SQL查询语言
SQL概述 SQL发展 SQL特点 SQL查询基本概念 单表查询 投影查询 1.查询指定列: SELECT 列名1,列名2,列名3,.....FROM Table_Name; #查询全部列:SELEC ...
- python基础之省份三级菜单
菜单 menu = { #定义一个字典 '北京':{ '海淀':{ '五道口':{ 'soho':{}, '网易':{}, 'google':{} }, '中关村':{ '爱奇艺':{}, '汽车之家 ...