题目描述

输入

一行,两个整数l,r 。

输出

一行,一个整数,表示第l 天到第r 天的愉悦值的和。

样例输入

64 89

样例输出

1818

数据范围

解法

可以参考数位动态规划的想法。

从个位开始,逐位把特殊值变为一般值。

然后分类讨论即可。

代码

#include<iostream>
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<algorithm>
#define ll long long
#define ln(x,y) int(log(x)/log(y))
#define sqr(x) ((x)*(x))
using namespace std;
const char* fin="aP3.in";
const char* fout="aP3.out";
const int inf=0x7fffffff;
const int maxn=30,mo=1000000007;
ll n,m,i,j,k,ans1;
ll qpower(ll a,ll b,ll mo){
ll c=1;
while (b){
if (b&1) c=a*a%mo;
a=a*a%mo;
b>>=1;
}
return c;
}
ll niyuan(ll a){
return qpower(a,mo-2,mo);
}
ll pp(ll v){
ll c=1;
for (;v;v--) c*=10;
return c;
}
ll count1(ll v){
ll i,j,k,cnt=1,ans=0,tmp=0,tmd,l,o,b[maxn],c[maxn];
if (v==0) return 0;
b[0]=0;
for (;v;v/=10) b[++b[0]]=v%10;
cnt=1;
ans=0;
for (k=1;k<=b[0];k++){
ans=(ans+b[k]*b[b[0]-k+1])%mo;
c[k]=1;
}
bool bz=false;
for (i=1;i<=b[0];i++){
for (j=(i==b[0]?1:0);j<b[i];j++){
o=b[i];
b[i]=j;
tmp=1;
for (k=1;k<=b[0];k++){
if (k*2-1==b[0]) {
if (!bz) ans=(ans+sqr(b[k])*(cnt/c[k])%mo)%mo;
else ans=(ans+b[k]*(cnt/c[k])%mo)%mo;
}
else ans=(ans+b[k]*b[b[0]-k+1]*(cnt/(c[k]*c[b[0]-k+1]))%mo)%mo;
}
b[i]=o;
}
if (i*2-1==b[0]) {
b[i]=285;
bz=true;
}
else b[i]=45;
c[i]=10;
cnt*=10;
}
ans=(ans+count1(pp(b[0]-1)-1))%mo;
return ans;
}
int main(){
scanf("%lld%lld",&n,&m);
ans1=count1(m)-count1(n-1);
ans1=(ans1+mo)%mo;
printf("%lld",ans1);
return 0;
}

启发

梦魇一般的题目。

要往死里打,遇到不对的数据,分类讨论到对为止。

改着改着就AC了。

数位动态规划的想法可以借鉴一下。

【JZOJ4799】【NOIP2016提高A组模拟9.24】我的快乐时代的更多相关文章

  1. 【NOIP2016提高A组模拟9.24】总结

    第一题纯模拟,结果那个出题人脑子似乎进水了,空间限制开了1G!!! 导致我捉摸了半天为什么空间要开那么大,最后只能得出上面的结论. 第二题是个矩阵快速幂,比赛上我没把递推式求出来,但是根据各种乱搞,得 ...

  2. 【NOIP2016提高A组模拟9.24】我的快乐时代

    题目 分析 虽然我们很难求出\(\sum_{i=n}^mjoy(i)\), 但是我们可以分别求出\(\sum_{i=1}^mjoy(i)\)和\(\sum_{i=1}^{n-1}joy(i)\),相减 ...

  3. 【NOIP2016提高A组模拟9.24】天使的分裂

    题目 分析 这题可以递推, 但是\(O(n)\)还是会超时, 就用矩阵快速幂. #include <cmath> #include <iostream> #include &l ...

  4. JZOJ 4732. 【NOIP2016提高A组模拟8.23】函数

    4732. [NOIP2016提高A组模拟8.23]函数 (Standard IO) Time Limits: 1500 ms  Memory Limits: 262144 KB  Detailed ...

  5. 【NOIP2016提高A组模拟9.14】数列编辑器

    题目 分析 比赛上,没有注意到询问只询问光标前面,于是只打了个暴力. 因为询问只询问光标前面,首先,当光标向后每移动到一个位置,顺便将这个位置的前缀和,和最大前缀和求出来. 总之,模拟 #includ ...

  6. 【JZOJ4746】【NOIP2016提高A组模拟9.3】树塔狂想曲

    题目描述 相信大家都在长训班学过树塔问题,题目很简单求最大化一个三角形数塔从上往下走的路径和.走的规则是:(i,j)号点只能走向(i+1,j)或者(i+1,j+1).如下图是一个数塔,映射到该数塔上行 ...

  7. 【JZOJ4745】【NOIP2016提高A组模拟9.3】看电影

    题目描述 听说NOIP2016大家都考得不错,于是CCF奖励省常中了 K 张变形金刚5的电影票奖励OI队的同学去看电影.可是省常中OI队的同学们共有 N(N >= K)人.于是机智的你想到了一个 ...

  8. 【JZOJ4803】【NOIP2016提高A组模拟9.28】求导

    题目描述 输入 输出 样例输入 2x^2+3x+1 样例输出 4x+3 数据范围 样例解释 求导的意思: 多项式是由若干个单项式构成的 单项式的一般形式是ax^b,其中ab都是常数,x是自变量 对于单 ...

  9. 【JZOJ4787】【NOIP2016提高A组模拟9.17】数格子

    题目描述 输入 输出 样例输入 1 10000 3 10000 5 10000 0 0 样例输出 1 11 95 数据范围 每个测试点数据组数不超过10组 解法 状态压缩动态规划. 设f[i][j]表 ...

随机推荐

  1. java关键字一览表

  2. vue.js_11_路由的2中参数传递和路由的嵌套

    1.以?的形式传递参数   <router-link to="/login?id=10&name=zs">登录</router-link> 发送参数 ...

  3. springboot核心技术(四)-----Docker、数据访问、自定义starter

    Docker 1.简介 Docker是一个开源的应用容器引擎:是一个轻量级容器技术: Docker支持将软件编译成一个镜像:然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使 用这个镜 ...

  4. Scrapy框架Crawler模板爬虫

    1.创建一个CrawlerSpider scrapy genspider -t crawl wx_spider 'wxapp-union.com' #导入规则 from scrapy.spiders ...

  5. JMETER远程运行_多机联合负载

    JMETER远程运行_多机联合负载 远程运行是用一台JMeter控制机控制远程的多台机器来产生负载.控制机与负载机之间通过RMI方式来完成通信.在负载机上运行Agent程序(启动命令是%JMETER_ ...

  6. 【vue】imitate-beautiful-thing

    我从未见过这么美妙的项目,当然与我接触的项目少有关,但是这个项目满满的艺术气息,让人沉醉,让人忍不住的去研究代码. 先放项目地址:https://github.com/eidonlon/imitate ...

  7. spotbus gradle-qulity-plugiin 多项目bug检查

    https://spotbugs.readthedocs.io/en/latest/bugDescriptions.html https://xvik.github.io/gradle-quality ...

  8. git cherry命令来比较两个分支的不同

    git cherry 命令使用 1. 两个参数的情况 git cherry -v origin/master asa 比较本地的asa分支和远程master的差别 git cherry -v mast ...

  9. goland设置go build的工作目录

  10. hdu 1505 && hdu1506 &&hdu 2830 && 2870 总结---------DP之状图选最大矩形

    /* 多谢了“闭眼,睁眼” 同学给我一套dp专题,不然真是没接触过这种题型. 做个4个简单的,很高兴有所收获. 2013-08-06 /* HDU 1506 最基础的一道题目,其主要精髓就在于两个数组 ...