HDU 4507 吉哥系列故事——恨7不成妻
需要推下平方和的式子。。维护个数,和,平方和。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define mod 1000000007LL
using namespace std;
long long bit[],tab[],ret=,t,l,r;
struct pnt
{
long long val1,val2,val3;
pnt (long long val1,long long val2,long long val3):val1(val1),val2(val2),val3(val3) {}
pnt () {}
}dp[][][];
void get_bit(long long x)
{
ret=;
while (x) {bit[++ret]=x%;x/=;}
}
void get_table()
{
tab[]=;
for (long long i=;i<=;i++) tab[i]=tab[i-]*%mod;
for (long long i=;i<=;i++)
for (long long j=;j<=;j++)
for (long long k=;k<=;k++)
{
dp[i][j][k].val1=dp[i][j][k].val2=dp[i][j][k].val3=-;
}
return;
}
pnt comb(pnt x,pnt y,long long pos,long long num)
{
long long r1=,r2=,r3=;
r1=((y.val3*tab[*(pos-)]%mod*num%mod*num%mod+(*(y.val2*tab[pos-]%mod)%mod*num)%mod)%mod+y.val1)%mod;
r2=(y.val3*num%mod*tab[pos-]%mod+y.val2)%mod;
r3=y.val3;
x.val1=(x.val1+r1)%mod;
x.val2=(x.val2+r2)%mod;
x.val3=(x.val3+r3)%mod;
return x;
}
pnt dfs(long long pos,long long val1,long long val2,bool flag)
{
if (!pos)
{
if (val1 && val2) return pnt(,,);
else return pnt(,,);
}
if ((!flag) && (~dp[pos][val1][val2].val1)) return dp[pos][val1][val2];
pnt ans=pnt(,,);long long up=flag?bit[pos]:;
for (long long i=;i<=up;i++)
{
if (i==) continue;
ans=comb(ans,dfs(pos-,(val1*+i)%,(val2+i)%,flag&&i==up),pos,i);
}
if (!flag) dp[pos][val1][val2]=ans;
return ans;
}
long long work(long long x)
{
get_bit(x);
return dfs(ret,,,).val1;
}
int main()
{
scanf("%I64d",&t);get_table();
for (long long i=;i<=t;i++)
{
scanf("%I64d%I64d",&l,&r);
printf("%I64d\n",(work(r)-work(l-)+mod)%mod);
}
return ;
}
HDU 4507 吉哥系列故事——恨7不成妻的更多相关文章
- HDU - 4507 - 吉哥系列故事——恨7不成妻(数位DP,数学)
链接: https://vjudge.net/problem/HDU-4507 题意: 单身! 依然单身! 吉哥依然单身! DS级码农吉哥依然单身! 所以,他生平最恨情人节,不管是214还是77,他都 ...
- HDU 4507 吉哥系列故事――恨7不成妻(数位DP+结构体)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4507 题目大意:如果一个整数符合下面3个条件之一,那么我们就说这个整数和7有关 1.整数中某一位是7: ...
- HDU 4507 吉哥系列故事——恨7不成妻 (数位DP)
题意: 如果一个整数符合下面3个条件之一,那么我们就说这个整数和7有关: 1.整数中某一位是7: 2.整数的每一位加起来的和是7的整数倍: 3.这个整数是7的整数倍: 给定一个区间[L,R],问在此区 ...
- HUD 4507 吉哥系列故事——恨7不成妻
传送门 三个限制都可以数位 $dp$ , $dfs$ 是维护当前位,之前各位总和模 $7$ 意义下的值,之前填的数模 $7$ 意义下的值,是否贴着限制 主要现在求的是各个合法数的平方的和,比较恶心 开 ...
- 吉哥系列故事——恨7不成妻(数位DP)
吉哥系列故事——恨7不成妻 http://acm.hdu.edu.cn/showproblem.php?pid=4507 Time Limit: 1000/500 MS (Java/Others) ...
- [HDU4507]吉哥系列故事——恨7不成妻
[HDU4507]吉哥系列故事--恨7不成妻 试题描述 单身!依然单身!吉哥依然单身!DS级码农吉哥依然单身!所以,他生平最恨情人节,不管是214还是77,他都讨厌!吉哥观察了214和77这两个数,发 ...
- 吉哥系列故事——恨7不成妻(数位dp)
吉哥系列故事--恨7不成妻 传送门 Problem Description 单身! 依然单身! 吉哥依然单身! DS级码农吉哥依然单身! 所以,他生平最恨情人节,不管是214还是77,他都讨厌! 吉哥 ...
- Day9 - J - 吉哥系列故事——恨7不成妻 HDU - 4507
单身! 依然单身! 吉哥依然单身! DS级码农吉哥依然单身! 所以,他生平最恨情人节,不管是214还是77,他都讨厌! 吉哥观察了214和77这两个数,发现: 2+1+4=7 7+7=7*2 77=7 ...
- 吉哥系列故事――恨7不成妻 HDU - 4507
题目: 单身! 依然单身! 吉哥依然单身! DS级码农吉哥依然单身! 所以,他生平最恨情人节,不管是214还是77,他都讨厌! 吉哥观察了214和77这两个数,发现: 2+1+4=7 7+7=7*2 ...
随机推荐
- 自己写的java用jxl导出到excel工具
package com; import java.io.BufferedOutputStream; import java.io.File; import java.io.IOException; i ...
- Java线程锁一个简单Lock
/** * @author * * Lock 是java.util.concurrent.locks下提供的java线程锁,作用跟synchronized类似, * 单是比它更加面向对象,两个线程执行 ...
- python操作数据库产生中文乱码问题【已解决】
记:最近在使用python进行学生成绩管理系统设计时,遇到了一个中文显示的问题,这个问题困扰了一个上午,查阅了有关资料,锁定了原因——编码问题.最终更改编码设置,问题得到了解决. 具体做法: 1 Py ...
- javascript 去掉空格之后的字符 正则表达式
从后端数据库读取时间时,经常会把整个日期年月日包括时分秒都取到,如2015-1-28 14:56:00,但是一般的我们只需要前面的年月日就行了.一个简单的方法,直接用split(" &quo ...
- CSSOM之getboundingclientrect和getclientrects
TextRectangle 对于文本对象,W3C提供了一个 TextRectangle 对象,这个对象是对文本区域的一个解释. 对于 i,span,em等display 是inline的标签,在书写文 ...
- 【CSU1812】三角形和矩形 【半平面交】
检验半平面交的板子. #include <stdio.h> #include <bits/stdc++.h> using namespace std; #define gg p ...
- js修改:before、:after的内容
一.js控制伪元素content内容 二. --------------2016-7-20 13:34:03-- source:[1]js如何控制伪元素的内容
- C++基础知识之vector
vector容器类型:vector容器是一个模板类,可以存放任何类型的对象(但必须是同一类对象).vector对象可以在运行时高效地添加元素,并且vector中元素是连续存储的.vector的构造 函 ...
- java并发编程-Executor框架
Executor框架是指java 5中引入的一系列并发库中与executor相关的一些功能类,其中包括线程池,Executor,Executors,ExecutorService,Completion ...
- 通过一行代码学习javascript
[].forEach.call($$("*"), function (a){ a.style.outline = "1px solid #"+(~~(Math. ...