K-lucky-number(0917)

问题描述

K-lucky-number is defined as add up the number of each bit is a multiple of K.for example, 24 is a 3-lucky-number,because 2+4=6, 6 is a multiple of 3.Now, there is a closed interval from L to R, please output the sum of squares of the K-lucky-number in this interval.

输入

The first line of input is the number of test cases T.

For each test case have one line contains three integer L, R, K(0<L<=R<10^9, 1<k<30).

输出

For each test case output the answer the sum of squares of the K-lucky-number in this interval and mod 1000000007.

样例输入

2
1 10 6
100 1000 7

样例输出

36
46057247

有点6、= =

#include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdio>
#include <cmath>
using namespace std;
#define ll long long
#define MOD 1000000007
#define INF 0x3f3f3f3f
#define N 50 struct Node{
ll cnt,sum,sqsum; //个数,和,平方和
}; int l,r,k;
int bit[N];
ll p10[N];
Node dp[N][N]; void init()
{
p10[]=;
for(int i=;i<=;i++) p10[i]=p10[i-]*%MOD;
}
Node dfs(int pos,int mod,bool limit)
{
Node ans;
ans.cnt=ans.sum=ans.sqsum=;
if(pos==-){
if(!mod) ans.cnt=;
else ans.cnt=;
return ans;
}
if(!limit && dp[pos][mod].sum!=-) return dp[pos][mod];
int end=limit?bit[pos]:;
for(int i=;i<=end;i++){
Node tmp=dfs(pos-,(mod+i)%k,(i==end)&&limit);
ans.cnt=(ans.cnt+tmp.cnt)%MOD;
ans.sum=(ans.sum + tmp.sum + i*p10[pos]%MOD*tmp.cnt%MOD)%MOD;
ans.sqsum=(ans.sqsum + i*i*p10[pos]%MOD*p10[pos]%MOD*tmp.cnt%MOD + *i*p10[pos]%MOD*tmp.sum%MOD + tmp.sqsum)%MOD;
}
if(!limit) dp[pos][mod]=ans;
return ans;
}
ll solve(int n)
{
int len=;
while(n){
bit[len++]=n%;
n/=;
}
return dfs(len-,,).sqsum;
}
int main()
{
init();
int T;
scanf("%d",&T);
while(T--)
{
memset(dp,-,sizeof(dp));
scanf("%d%d%d",&l,&r,&k);
printf("%lld\n",(solve(r)-solve(l-)+MOD)%MOD);
}
return ;
}

[swustoj 917] K-lucky-number的更多相关文章

  1. 枚举 + 进制转换 --- hdu 4937 Lucky Number

    Lucky Number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)To ...

  2. HDOJ 4937 Lucky Number

    当进制转换后所剩下的为数较少时(2位.3位),相应的base都比較大.能够用数学的方法计算出来. 预处理掉转换后位数为3位后,base就小于n的3次方了,能够暴力计算. . .. Lucky Numb ...

  3. CF1478-B. Nezzar and Lucky Number

    CF1478-B. Nezzar and Lucky Number 题意: 题目给出一个数字\(d(1\leq d \leq 9)\)代表某个人最喜欢的数字. 题目定义了幸运数字,它的含义为:若一个数 ...

  4. SCU3502 The Almost Lucky Number

    Description A lucky number is a number whose decimal representation contains only the digits \(4\) a ...

  5. 题目1380:lucky number

    转载请注明文本链接 http://blog.csdn.net/yangnanhai93/article/details/40441709 题目链接地址:http://ac.jobdu.com/prob ...

  6. HDU 3346 Lucky Number

    水题 #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> us ...

  7. 九度oj 题目1380:lucky number

    题目描述: 每个人有自己的lucky number,小A也一样.不过他的lucky number定义不一样.他认为一个序列中某些数出现的次数为n的话,都是他的lucky number.但是,现在这个序 ...

  8. 『NYIST』第九届河南省ACM竞赛队伍选拔赛[正式赛二]- Nearly Lucky Number(Codeforces Beta Round #84 (Div. 2 Only)A. Nearly)

    A. Nearly Lucky Number time limit per test 2 seconds memory limit per test 256 megabytes input stand ...

  9. ZOJ 3233 Lucky Number

    Lucky Number Time Limit: 5000ms Memory Limit: 32768KB This problem will be judged on ZJU. Original I ...

  10. B - Nearly Lucky Number

    Problem description Petya loves lucky numbers. We all know that lucky numbers are the positive integ ...

随机推荐

  1. 《WPF程序设计指南》读书笔记——第5章 Stack与Wrap

    1.StackPanel面板 using System; using System.Windows; using System.Windows.Input; using System.Windows. ...

  2. 【MongoDB】 安装为windows services

    参考  http://stackoverflow.com/questions/2404742/how-to-install-mongodb-on-windows # mongodb.conf # da ...

  3. [转]oracle10.2.0.1下载链接

    记录一下ORACLE 10gR2的软件下载地址,备用. 下载OTN上的这些软件,你需要一个OTN免费帐号,不过如果通过迅雷进行下载,就不用登陆OTN了: Oracle Database 10g Rel ...

  4. 浏览器对象模型BOM(Browser Object Model)

    1.结构 BOM是Browser Object Model的缩写,简称浏览器对象模型 BOM提供了独立于内容而与浏览器窗口进行交互的对象 由于BOM主要用于管理窗口与窗口之间的通讯,因此其核心对象是w ...

  5. 手写快速排序(QuickSort)

    #include<iostream> #include<stdio.h> #include<algorithm> using namespace std; int ...

  6. WEB开发人员必知的20+HTML5技巧(转)

    互联网科技发展的速度真可谓惊人的快,一个稍不留神,你就可能无法跟上它的步伐. HTML5的变化和更新也压倒不少人,这篇文章将向大家介绍一些最基本也非常必要的 HTML技巧. 1. 新的文档类型(Doc ...

  7. js key事件 keyCode大全

    keycode 8 = BackSpace BackSpace keycode 9 = Tab Tab keycode 12 = Clear keycode 13 = Enter keycode 16 ...

  8. Notifications Nagios

    Introduction I've had a lot of questions as to exactly how notifications work. This will attempt to ...

  9. Codeforces Round #243 (Div. 2) A~C

    题目链接 A. Sereja and Mugs time limit per test:1 secondmemory limit per test:256 megabytesinput:standar ...

  10. 12 求1+2+...+n

    参考 http://www.cppblog.com/zengwei0771/archive/2012/04/28/173014.html 和 http://blog.csdn.net/shiren_b ...