Submission #74772606
Source Code Expand
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define int long long
#define fi first
#define se second
#define ckadd(x,y) x=(x+y)%mod
namespace io{const int __SIZE=(1<<21)+1;char ibuf[__SIZE],*iS,*iT,obuf[__SIZE],*oS=obuf,*oT=oS+__SIZE-1,__c,qu[55];int __f,qr,_eof;
#define Gc()(iS==iT?(iT=(iS=ibuf)+fread(ibuf,1,__SIZE,stdin),(iS==iT?EOF:*iS++)):*iS++)
inline void flush(){fwrite(obuf,1,oS-obuf,stdout),oS=obuf;}inline void gc(char&x){x=Gc();}inline void pc(char x){*oS++=x;if(oS==oT)flush();}inline void pstr(const char*s){int __len=strlen(s);for(__f=0;__f<__len;++__f)pc(s[__f]);}inline void gstr(char*s){for(__c=Gc();__c<32||__c>126||__c==' ';)__c=Gc();for(;__c>31&&__c<127&&__c!=' '&&__c!='\n'&&__c!='\r';++s,__c=Gc())*s=__c;*s=0;}template<class I>inline bool gi(I&x){_eof=0;for(__f=1,__c=Gc();(__c<'0'||__c>'9')&&!_eof;__c=Gc()){if(__c=='-')__f=-1;_eof|=__c==EOF;}for(x=0;__c<='9'&&__c>='0'&&!_eof;__c=Gc())x=x*10+(__c&15),_eof|=__c==EOF;x*=__f;return!_eof;}template<class I>inline void print(I x){if(!x)pc('0');if(x<0)pc('-'),x=-x;while(x)qu[++qr]=x%10+'0',x/=10;while(qr)pc(qu[qr--]);}struct Flusher_{~Flusher_(){flush();}}io_flusher_;}using io::pc;using io::gc;using io::pstr;using io::gstr;using io::gi;using io::print;
constexpr int mod=1e9+7;
string s;
int n;
pair<ll,ll> f[30][10][2];
pair<ll,ll> dfs(int x,int lst,int has0,int limt,int lead){
if(x==n){
if(lead) return {0,0};
if(has0) return {0,2};
return {0,1};
}
if(!limt&&!lead&&f[x][lst][has0].fi!=-1)
return f[x][lst][has0];
int up=(limt?s[x]-'0':9);
pair<ll,ll> res={0,0};
for(int i=0;i<=up;i++){
int nlimt=limt&&(i==up);
int nlead=lead&&(i==0);
int nhas0=has0||(i==0&&!lead);
auto ret=dfs(x+1,i,nhas0,nlimt,nlead);
int t=0;
if(!lead) t=abs(i-lst)*ret.se%mod;
ckadd(res.fi,ret.fi+t);
ckadd(res.se,ret.se);
}
if(!limt&&!lead)
f[x][lst][has0]=res;
return res;
}
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);
cin>>s;n=s.size();
memset(f,-1,sizeof f);
auto ans=dfs(0,0,0,1,1);
cout<<ans.fi;
return 0;
}
Submission Info
Judge Result
| Set Name |
Sample |
All |
| Score / Max Score |
0 / 0 |
466 / 466 |
| Status |
|
|
| Set Name |
Test Cases |
| Sample |
sample01.txt, sample02.txt, sample03.txt, sample04.txt, sample05.txt |
| All |
sample01.txt, sample02.txt, sample03.txt, sample04.txt, sample05.txt, in01.txt, in02.txt, in03.txt, in04.txt, in05.txt, in06.txt, in07.txt, in08.txt, in09.txt, in10.txt, in11.txt, in12.txt, in13.txt, in14.txt, in15.txt, in16.txt, in17.txt, in18.txt, in19.txt, in20.txt, in21.txt, in22.txt, in23.txt, in24.txt, in25.txt, in26.txt, in27.txt, in28.txt, in29.txt, in30.txt, in31.txt, in32.txt, in33.txt, in34.txt, in35.txt, in36.txt, in37.txt, in38.txt, in39.txt, in40.txt |
| Case Name |
Status |
Exec Time |
Memory |
| in01.txt |
AC |
1 ms |
3524 KiB |
| in02.txt |
AC |
1 ms |
3472 KiB |
| in03.txt |
AC |
1 ms |
3548 KiB |
| in04.txt |
AC |
1 ms |
3508 KiB |
| in05.txt |
AC |
1 ms |
3500 KiB |
| in06.txt |
AC |
1 ms |
3540 KiB |
| in07.txt |
AC |
1 ms |
3508 KiB |
| in08.txt |
AC |
1 ms |
3540 KiB |
| in09.txt |
AC |
1 ms |
3516 KiB |
| in10.txt |
AC |
1 ms |
3516 KiB |
| in11.txt |
AC |
1 ms |
3536 KiB |
| in12.txt |
AC |
1 ms |
3524 KiB |
| in13.txt |
AC |
1 ms |
3516 KiB |
| in14.txt |
AC |
1 ms |
3476 KiB |
| in15.txt |
AC |
1 ms |
3620 KiB |
| in16.txt |
AC |
1 ms |
3548 KiB |
| in17.txt |
AC |
1 ms |
3548 KiB |
| in18.txt |
AC |
1 ms |
3476 KiB |
| in19.txt |
AC |
1 ms |
3532 KiB |
| in20.txt |
AC |
1 ms |
3536 KiB |
| in21.txt |
AC |
1 ms |
3472 KiB |
| in22.txt |
AC |
1 ms |
3524 KiB |
| in23.txt |
AC |
1 ms |
3524 KiB |
| in24.txt |
AC |
1 ms |
3472 KiB |
| in25.txt |
AC |
1 ms |
3508 KiB |
| in26.txt |
AC |
1 ms |
3516 KiB |
| in27.txt |
AC |
1 ms |
3428 KiB |
| in28.txt |
AC |
1 ms |
3540 KiB |
| in29.txt |
AC |
1 ms |
3536 KiB |
| in30.txt |
AC |
1 ms |
3528 KiB |
| in31.txt |
AC |
1 ms |
3480 KiB |
| in32.txt |
AC |
1 ms |
3540 KiB |
| in33.txt |
AC |
1 ms |
3516 KiB |
| in34.txt |
AC |
1 ms |
3524 KiB |
| in35.txt |
AC |
1 ms |
3548 KiB |
| in36.txt |
AC |
1 ms |
3516 KiB |
| in37.txt |
AC |
1 ms |
3540 KiB |
| in38.txt |
AC |
1 ms |
3516 KiB |
| in39.txt |
AC |
1 ms |
3540 KiB |
| in40.txt |
AC |
1 ms |
3516 KiB |
| sample01.txt |
AC |
1 ms |
3620 KiB |
| sample02.txt |
AC |
1 ms |
3540 KiB |
| sample03.txt |
AC |
1 ms |
3480 KiB |
| sample04.txt |
AC |
1 ms |
3540 KiB |
| sample05.txt |
AC |
1 ms |
3512 KiB |