【数位DP】恨7不成妻
作者:互联网
【数位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代码:
1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 const ll mod=1e9+7; 5 ll l,r,decimal[25],a[25]; 6 struct node 7 { 8 ll sum0,sum1,sum2; 9 node():sum0(0),sum1(0),sum2(0) {} 10 }dp[25][10][10]; 11 node dfs(int pos,int addremain,int numremain,bool limit) 12 { 13 if(pos==0) 14 { 15 node cnt; 16 if(addremain && numremain) cnt.sum0=1; 17 return cnt; 18 } 19 if(dp[pos][addremain][numremain].sum0 && !limit) return dp[pos][addremain][numremain]; 20 node res; 21 ll up=limit?a[pos]:9; 22 for(ll i=0;i<=up;i++) 23 { 24 if(i==7) continue; 25 node tmp=dfs(pos-1,(addremain+i)%7,(numremain*10+i)%7,i==a[pos]&&limit); 26 res.sum0=(res.sum0+tmp.sum0)%mod; 27 res.sum1=(res.sum1+tmp.sum1+decimal[pos-1]*i%mod*tmp.sum0%mod)%mod; 28 res.sum2=(res.sum2+tmp.sum2+2*i%mod*decimal[pos-1]%mod*tmp.sum1%mod 29 +i*i%mod*decimal[pos-1]%mod*decimal[pos-1]%mod*tmp.sum0%mod)%mod; 30 } 31 if(!limit) dp[pos][addremain][numremain]=res; 32 return res; 33 } 34 ll solve(ll val) 35 { 36 int len=0; 37 while(val) 38 { 39 a[++len]=val%10; 40 val/=10; 41 } 42 return dfs(len,0,0,true).sum2; 43 } 44 int main() 45 { 46 decimal[0]=1; 47 for(int i=1;i<=20;i++) decimal[i]=decimal[i-1]*10%mod; 48 int t; 49 for(scanf("%d",&t);t;t--) 50 { 51 scanf("%lld %lld",&l,&r); 52 printf("%lld\n",(solve(r)-solve(l-1)+mod)%mod); 53 } 54 return 0; 55 } 56 //1 1000000000000000000View Code
标签:node,10,ll,pos,sum0,addremain,不成,DP,数位 来源: https://www.cnblogs.com/lglh/p/11105986.html