【数位DP】恨7不成妻

时间限制: 1 Sec  内存限制: 128 MB
提交: 8  解决: 4
[提交] [状态] [命题人:admin]

题目描述

单身!
依然单身!
吉哥依然单身!
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无关的数字的平方和。

输入

输入数据的第一行是case数T(1 <= T <= 50),然后接下来的T行表示T个case;每个case在一行内包含两个正整数L, R(1 <= L <= R <= 10^18)。

输出

请计算[L,R]中和7无关的数字的平方和,并将结果对10^9 + 7 求模后输出。

样例输入

复制样例数据

3
1 9
10 11
17 17

样例输出

236
221
0
题解:https://blog.csdn.net/zxyoi_dreamer/article/details/82897281
AC代码:
 #include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod=1e9+;
ll l,r,decimal[],a[];
struct node
{
ll sum0,sum1,sum2;
node():sum0(),sum1(),sum2() {}
}dp[][][];
node dfs(int pos,int addremain,int numremain,bool limit)
{
if(pos==)
{
node cnt;
if(addremain && numremain) cnt.sum0=;
return cnt;
}
if(dp[pos][addremain][numremain].sum0 && !limit) return dp[pos][addremain][numremain];
node res;
ll up=limit?a[pos]:;
for(ll i=;i<=up;i++)
{
if(i==) continue;
node tmp=dfs(pos-,(addremain+i)%,(numremain*+i)%,i==a[pos]&&limit);
res.sum0=(res.sum0+tmp.sum0)%mod;
res.sum1=(res.sum1+tmp.sum1+decimal[pos-]*i%mod*tmp.sum0%mod)%mod;
res.sum2=(res.sum2+tmp.sum2+*i%mod*decimal[pos-]%mod*tmp.sum1%mod
+i*i%mod*decimal[pos-]%mod*decimal[pos-]%mod*tmp.sum0%mod)%mod;
}
if(!limit) dp[pos][addremain][numremain]=res;
return res;
}
ll solve(ll val)
{
int len=;
while(val)
{
a[++len]=val%;
val/=;
}
return dfs(len,,,true).sum2;
}
int main()
{
decimal[]=;
for(int i=;i<=;i++) decimal[i]=decimal[i-]*%mod;
int t;
for(scanf("%d",&t);t;t--)
{
scanf("%lld %lld",&l,&r);
printf("%lld\n",(solve(r)-solve(l-)+mod)%mod);
}
return ;
}
//1 1000000000000000000

【数位DP】恨7不成妻的更多相关文章

  1. 吉哥系列故事——恨7不成妻(数位DP)

    吉哥系列故事——恨7不成妻 http://acm.hdu.edu.cn/showproblem.php?pid=4507 Time Limit: 1000/500 MS (Java/Others)   ...

  2. 吉哥系列故事——恨7不成妻(数位dp)

    吉哥系列故事--恨7不成妻 传送门 Problem Description 单身! 依然单身! 吉哥依然单身! DS级码农吉哥依然单身! 所以,他生平最恨情人节,不管是214还是77,他都讨厌! 吉哥 ...

  3. hdu4507吉哥系列故事——恨7不成妻 (数位dp)

    Problem Description 单身! 依然单身! 吉哥依然单身! DS级码农吉哥依然单身! 所以,他生平最恨情人节,不管是214还是77,他都讨厌! 吉哥观察了214和77这两个数,发现: ...

  4. HDU-4507 吉哥系列故事——恨7不成妻 数位DP

    题意:给定区间[L, R]求区间内与7无关数的平方和.一个数当满足三个规则之一则认为与7有关:1.整数中某一位是7:2.整数的每一位加起来的和是7的整数倍:3.这个整数是7的整数倍: 分析:初看起来确 ...

  5. hdu_4507_吉哥系列故事——恨7不成妻(鬼畜数位DP)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=4507 题意:中文,不解释,注意的是求的是合法数字的平方和,即(a+b+c+……)^2 题解:数位DP, ...

  6. 吉哥系列故事――恨7不成妻 HDU - 4507 数位dp

    思路  和普通的DP不一样的是 这里求的是满足条件的数的平方的和 而数位DP只跟数每位是什么密切相关  所以要开一个结构 (多加一个 数的和sum 和平方和qsum)存一下各个状态的和的情况 dp[p ...

  7. hdu-4507 吉哥系列故事——恨7不成妻 数位DP 状态转移分析/极限取模

    http://acm.hdu.edu.cn/showproblem.php?pid=4507 求[L,R]中不满足任意条件的数的平方和mod 1e9+7. 条件: 1.整数中某一位是7:2.整数的每一 ...

  8. 2018.09.27 hdu4507吉哥系列故事——恨7不成妻(数位dp)

    传送门 一道比较综合的数位dp. 维护三个值:[L,R][L,R][L,R] 区间中与7无关的数的数量,与7无关的数之和,与7无关的数的的平方和. 然后可以用第一个值推第二个,第一个和第二个值推第三个 ...

  9. 【hdu4507】吉哥系列故事——恨7不成妻 数位dp

    题目描述 求 $[L,R]$ 内满足:数位中不包含7.数位之和不是7的倍数.本身不是7的倍数 的所有数的平方和 mod $10^9+7$ . 输入 输入数据的第一行是case数T(1 <= T ...

随机推荐

  1. JavaWeb_(Mybatis框架)Mapper动态代理开发_三

    系列博文: JavaWeb_(Mybatis框架)JDBC操作数据库和Mybatis框架操作数据库区别_一 传送门 JavaWeb_(Mybatis框架)使用Mybatis对表进行增.删.改.查操作_ ...

  2. MySql数据类型及对应存储空间

    整数型数据类型 类型名称 说明 存储需求 TINYINT 很小的正数 1个字节 SMALLINT 小正数 2个字节 MEDIUMINT 中等大小的正数 3个字节 INT(INTEGER) 普通大小的正 ...

  3. conda虚拟环境 相关操作

    查询环境 conda env list 或者 conda info --envs 创建环境 conda create -n your_env_name python=3.7 删除环境 conda re ...

  4. springmvc源码解读(简介)

    1.客户端请求提交的DispatcherServlet 2.由DispatcherServlet控制器查询一个或者多个HandlerMapping,找到处理请求的Controller. 3.Dispa ...

  5. DS博客作业07——查找

    1.本周学习总结 1.1思维导图 1.2.谈谈你对查找运算的认识及学习体会. 查找的内容和前两章树和图相比,要简单许多,在二次搜索树虽然也要用到树,但是也是很简单的树的操作,再加上查找的代码可以使用m ...

  6. SDN上机第4次作业

    1. 解压安装OpenDayLight控制器(本次实验统一使用Beryllium版本) 1)JDK的安装与环境配置 ​ 嗯,装这个东西还得先装JDK: ​ 在线真人手把手教你安装jdk ​ 输入sud ...

  7. 之前有面试到两个日期的大小比较方式,现在整理一下几种方法。   例子:   String beginTime=new String("2017-06-09 10:22:22");     String endTime=new String("2017-05-08 11:22:22");  1  直接用Date自带方法before()和after()比较 SimpleDateFormat d

    各种数据类型(日期/时间.integer.floating point和numeric)转换成格式化的字符串以及反过来从格式化的字符串转换成指定的数据类型.下面列出了这些函数,它们都遵循一个公共的调用 ...

  8. 前端知识点回顾之重点篇——ES6的Promise对象

    Promise Promise 是异步编程的一种解决方案,比传统的解决方案--回调函数和事件--更合理和更强大. 所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异 ...

  9. LC 979. Distribute Coins in Binary Tree

    Given the root of a binary tree with N nodes, each node in the tree has node.val coins, and there ar ...

  10. javascript 数据分组

    一.静态数据 [ {"id":"1001","name":"值1","value":"11 ...