码迷,mamicode.com
首页 > 其他好文 > 详细

luoguP3413 萌数

时间:2019-06-11 11:24:48      阅读:79      评论:0      收藏:0      [点我收藏+]

标签:while   display   amp   ide   size   input   namespace   sizeof   one   

技术图片
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 const int maxn=1e3+5;
 4 const int mod=1e9+7;
 5 int n,m,mark;
 6 char l[maxn],r[maxn];
 7 int numl,numr;
 8 int tot,e[maxn];
 9 long long c[maxn][20][2];
10 template<class t>void red(t &x)
11 {
12     int w=1;
13     x=0;
14     char ch=getchar();
15     while(ch>9||ch<0)
16     {
17         if(ch==-)
18             w=-1;
19         ch=getchar(); 
20     }
21     while(ch>=0&&ch<=9)
22     {
23         x=(x<<3)+(x<<1)+ch-0;
24         ch=getchar();
25     } 
26     x*=w;
27 } 
28 void input()
29 {
30     freopen("input.txt","r",stdin);
31 }
32 void dv(int x)
33 {
34     tot=0;
35     while(x)
36     {
37         e[++tot]=x%10;
38         x/=10;
39     }
40     e[tot+1]=0;
41 } 
42 long long dfs(int pos,bool limit,bool zero,int pre,int qpre,bool dc)
43 {
44     if(pos==0)
45         return dc;
46     if(!limit&&c[pos][pre][dc]!=-1)
47         return c[pos][pre][dc];
48     int up=limit?e[pos]:9;
49     long long ans=0;
50     for(int i=0;i<=up;++i)
51         ans+=dfs(pos-1,limit&&(i==up),zero||i,i,zero?pre:-1,dc||(i==pre&&zero)||(i==qpre&&zero))%mod;
52     if(!limit&&zero&&qpre!=-1)
53         c[pos][pre][dc]=ans;
54     return ans;
55 }
56 long long solve()
57 {
58     //dv(x);
59     tot=0;
60     while(m--)
61         e[++tot]=r[m]-0;
62     while(!e[tot])
63         --tot; 
64     memset(c,-1,sizeof(c));
65     long long ans=dfs(tot,1,0,-1,-1,0)%mod; 
66     tot=0;
67     while(n--)
68         e[++tot]=l[n]-0;
69     while(!e[tot])
70         --tot;
71     memset(c,-1,sizeof(c));
72     ans-=dfs(tot,1,0,-1,-1,0)%mod;
73     return ans;
74 }
75 void read()
76 {
77     scanf("%s%s",l,r);
78     n=strlen(l);
79     m=strlen(r);
80 }
81 void work()
82 {
83     int i=1;
84     while(l[n-i]==0&&n>i)
85     {
86         l[n-i]=9;
87         ++i;
88     }
89     l[n-i]-=1;
90     printf("%lld",(solve()+mod)%mod);
91 }
92 int main()
93 {
94     //input();
95     read();
96     work();
97     return 0;
98 }
View Code

 

luoguP3413 萌数

标签:while   display   amp   ide   size   input   namespace   sizeof   one   

原文地址:https://www.cnblogs.com/Achensy/p/11002149.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!