QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#358821 | #8337. Counter Reset Problem | Kirill22# | AC ✓ | 48ms | 4416kb | C++23 | 4.3kb | 2024-03-20 01:23:16 | 2024-03-20 01:23:16 |
Judging History
answer
#include "bits/stdc++.h"
using namespace std;
const int mod = (int) 1e9 + 9;
int add(int x, int y) {
return x + y >= mod ? x + y - mod : x + y;
}
int sub(int x, int y) {
return x - y < 0 ? x - y + mod : x - y;
}
int mul(int x, int y) {
return x * 1ll * y % mod;
}
int binpow(int x, int n) {
int res = 1;
while (n) {
if (n & 1) {
res = mul(res, x);
}
x = mul(x, x);
n >>= 1;
}
return res;
}
const int N = (int) 1e5;
int pw[N];
int check(int msk, int x) {
return msk % (1 << x) != 0;
}
vector<int> upd(vector<int> dp, char c) {
if (c == '0') {
return dp;
}
int uk = 0;
while (uk < dp.size() && dp[uk] > c - '0') uk++;
if (uk == dp.size()) dp.push_back(c - '0');
else dp[uk] = max(dp[uk], c - '0');
return dp;
}
int get(string s) {
vector<int> f = {10};
vector<vector<int>> qu = {f};
map<vector<int>, int> used;
used[f] = 0;
for (int i = 0; i < (int) qu.size(); i++) {
for (int x = 0; x < 10; x++) {
auto z = upd(qu[i], (char) '0' + x);
if (used.find(z) == used.end()) {
used[z] = (int) qu.size();
qu.push_back(z);
}
}
}
const int k = (int) qu.size(), m = (int) s.size();
vector<vector<int>> go(k, vector<int> (10));
for (int i = 0; i < k; i++) {
for (int x = 0; x < 10; x++) {
go[i][x] = used[upd(qu[i], (char) '0' + x)];
}
}
int ans = 0;
for (int x = 0; x <= s[0] - '0'; x++) {
if (x < s[0] - '0') {
ans = add(ans, mul(10 - x, pw[m - 1]));
} else {
ans = add(ans, 10 - x);
for (int j = 1; j < m; j++) {
ans = add(ans, mul(10 - x, mul(s[j] - '0', pw[m - j - 1])));
}
}
}
vector<int> dp(k), dp2(k);
int stk = 0;
for (int i = 0; i < m; i++) {
std::fill(dp2.begin(), dp2.end(), 0);
for (int x = 0; x < 10; x++) {
for (int msk = 0; msk < k; msk++) {
dp2[go[msk][x]] = add(dp2[go[msk][x]], dp[msk]);
}
if (x < s[i] - '0') {
dp2[go[stk][x]] = add(dp2[go[stk][x]], 1);
} else if (x == s[i] - '0') {
stk = go[stk][x];
}
}
dp = dp2;
}
dp[stk]++;
for (int i = 0; i < k; i++) {
if ((int) qu[i].size() <= 2 || !dp[i]) {
continue;
}
ans = add(ans, mul(10, mul((int) qu[i].size() - 2, dp[i])));
}
ans = sub(ans, 10);
return ans;
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
pw[0] = 1;
for (int i = 1; i < N; i++) {
pw[i] = mul(pw[i - 1], 10);
}
// get("10");
// return 0;
// cout << get("9") << " " << get("10") << " " << get("11") << endl;
// return 0;
// for (int n = 1; n < 25; n++) {
// cout << n << " " << get(to_string(n)) - get(to_string(n - 1)) << endl;
// }
// return 0;
int n;
string L, R;
cin >> n >> L >> R;
// {
// int ans = 0;
// for (int x = stoi(L); x <= stoi(R); x++) {
// string s = to_string(x);
// if (s[0] != '0') ans += 10 - (s[0] - '0');
// vector<int> dp = {(int) 1e9};
// for (auto c : s) {
// if (c == '0') continue;
// int uk = 0;
// while (uk < dp.size() && dp[uk] > c - '0') uk++;
// if (uk == dp.size()) dp.push_back(c - '0');
// else dp[uk] = max(dp[uk], c - '0');
// }
// ans += ((int) dp.size() - 2) * 10;
// }
// cout << ans;
// return 0;
// }
// while (!L.empty() && L[0] == '0') {
// L.erase(L.begin());
// }
// while (!R.empty() && R[0] == '0') {
// R.erase(R.begin());
// }
int ans = get(R);
if (count(L.begin(), L.end(), '0') != n) {
for (int i = (int) L.size() - 1; i >= 0; i--) {
if (L[i] == '0') {
L[i] = '9';
} else {
L[i]--;
break;
}
}
ans = sub(ans, get(L));
}
cout << ans;
}
详细
Test #1:
score: 100
Accepted
time: 3ms
memory: 4192kb
input:
2 19 23
output:
51
result:
ok 1 number(s): "51"
Test #2:
score: 0
Accepted
time: 3ms
memory: 4384kb
input:
6 100084 518118
output:
9159739
result:
ok 1 number(s): "9159739"
Test #3:
score: 0
Accepted
time: 3ms
memory: 4096kb
input:
12 040139021316 234700825190
output:
771011551
result:
ok 1 number(s): "771011551"
Test #4:
score: 0
Accepted
time: 3ms
memory: 4096kb
input:
1 5 6
output:
9
result:
ok 1 number(s): "9"
Test #5:
score: 0
Accepted
time: 3ms
memory: 4384kb
input:
2 06 72
output:
609
result:
ok 1 number(s): "609"
Test #6:
score: 0
Accepted
time: 3ms
memory: 4152kb
input:
3 418 639
output:
2912
result:
ok 1 number(s): "2912"
Test #7:
score: 0
Accepted
time: 42ms
memory: 4340kb
input:
5000 0517031462295902016787205636287842713710486158285091634061538907131690102542613263904109051429895599547551249682345434244517372300211330243052548402051817254239088411128320032011447373157210750522722463984933692575118884942425236057310901139962840332684448050855646476051878413350560455871387882...
output:
107583434
result:
ok 1 number(s): "107583434"
Test #8:
score: 0
Accepted
time: 48ms
memory: 4368kb
input:
5000 2839631722409885676641854449409094340492285620998199901290315528351589154393629439187822315178094894928108915180727622985054953310653613329475433266861767377091508110388139487587162480394472451041742086595826537286229012805321959193382957731290351060584443229684181235109638118508206073343246746...
output:
675394398
result:
ok 1 number(s): "675394398"
Test #9:
score: 0
Accepted
time: 42ms
memory: 4056kb
input:
5000 0121086815228520611727091239718315691985426539178955693257347642954702438161323478758508490896602335048895013843711247876462745921412007803120100676220049634783076688779134708737789972863426435630047856085762842025741483042162463573248808646044510524282002015852558702184741741663627502716091539...
output:
578074633
result:
ok 1 number(s): "578074633"
Test #10:
score: 0
Accepted
time: 45ms
memory: 4128kb
input:
5000 4009315923866078525437170431271052539467314353326632440452295409898108927334934001515186676883568587509019024813648111170281871732854866326020722523420074725860024843129825137935119924032162976610499681775742229100481059217175250566980703955103400572138763397380102014106688956905053311588400020...
output:
819323161
result:
ok 1 number(s): "819323161"
Test #11:
score: 0
Accepted
time: 22ms
memory: 4340kb
input:
5000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...
output:
603082563
result:
ok 1 number(s): "603082563"
Test #12:
score: 0
Accepted
time: 43ms
memory: 4212kb
input:
5000 0000000000633885819366504765094216298281960115914830941309836432136467240201372806102560453534308348622092992247290436462357300397071633074308793521958159789664211849487860185596546426031984309106487856333298764102131430876495841906089018423483214628974388565112953850655936525351241150423557902...
output:
932985830
result:
ok 1 number(s): "932985830"
Test #13:
score: 0
Accepted
time: 43ms
memory: 4172kb
input:
5000 0000000000650071814576152799371217256711135670967833166238159122753757108206475870392502604983652311016561019624401935292136522985447486826468820130245419622704571928465636054879957833368768017917014412258366637135806195430779375102341403097313114652657311053858679927415807978179707936045164697...
output:
272575829
result:
ok 1 number(s): "272575829"
Test #14:
score: 0
Accepted
time: 42ms
memory: 4212kb
input:
5000 0000000000657328094229913746099323221146491408592219130181502886161406660277702363829799840322984053200487383170118175993742015582187072728949691015559424378545103435137870775283813213496909942045139231518000704584636857968337740896332218427286839853901635635205631771246231118877718651555449476...
output:
794251626
result:
ok 1 number(s): "794251626"
Test #15:
score: 0
Accepted
time: 42ms
memory: 4112kb
input:
5000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...
output:
249826051
result:
ok 1 number(s): "249826051"
Test #16:
score: 0
Accepted
time: 44ms
memory: 4116kb
input:
5000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...
output:
877173017
result:
ok 1 number(s): "877173017"
Test #17:
score: 0
Accepted
time: 48ms
memory: 4212kb
input:
5000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...
output:
151485979
result:
ok 1 number(s): "151485979"
Test #18:
score: 0
Accepted
time: 43ms
memory: 4416kb
input:
5000 0159014801946206696258203734914898037641394210297261730549338421564727821732889635369991666567782236274462438080517568850617352494745082823560909208313152733628396054053172422625874823061159544738915513215515633519036492102915591743629184750409504215140627903979481678277623315334259446755105828...
output:
721368738
result:
ok 1 number(s): "721368738"
Test #19:
score: 0
Accepted
time: 46ms
memory: 4212kb
input:
5000 1593096611929089320399735515670839445317319641521540547482273258869976707444342997517499850977225584459583734048472878376916290891193430156881347098295345589049871574695262843296709640049484336491756355117553445542978365925369583583406406734326950373574468989639441003537832172772375589737899071...
output:
938487418
result:
ok 1 number(s): "938487418"
Test #20:
score: 0
Accepted
time: 42ms
memory: 4412kb
input:
5000 1942754790423610065924881906928119381391132828624720869957031069051460107457618922368312221824960963868132141390226651557497490792608519699575355021753486816233381998899114193162905677398416103685843594379329937984889028183716216739319144146889113025558315492727143533792499692123674201374872204...
output:
723492844
result:
ok 1 number(s): "723492844"
Test #21:
score: 0
Accepted
time: 43ms
memory: 4180kb
input:
5000 4062002096644487673020263989686288898129263292181828632789920013217757414472684149988936679623592326524449425327527672207934691459025745820923996124060064518639311904886395009369861933306193619424323629802988069193226260879633708828283152348279888974862721493316338548452978605219663779103239012...
output:
238281829
result:
ok 1 number(s): "238281829"
Test #22:
score: 0
Accepted
time: 45ms
memory: 4168kb
input:
5000 6316405933251299737337372498948127698855361795106851122342961878511099460284477800021689398773624710796531710111934536692264758409336968822534138067510480682327132829787521086380502223411574189720853737018253702539000736954530096098855210480774721647243160303878286632142888618049567476390480811...
output:
438115612
result:
ok 1 number(s): "438115612"
Test #23:
score: 0
Accepted
time: 42ms
memory: 4336kb
input:
5000 4312995075485686062543180629030314065218422802018901116305311949720089333627550862972827086943311274559763137206551659057830635552994046725440486537460417228963181395186626882241528751346159385275967489215558848690842325538312571185487608780842174973345018125820224444022865526286898846914681241...
output:
414266160
result:
ok 1 number(s): "414266160"
Test #24:
score: 0
Accepted
time: 42ms
memory: 4416kb
input:
5000 0258086533802944384387156598490812537122764239806464778492912263251810255189880663895709905649979907456754907239502806015536719760934923039556119131886838490466915234652947639266720467416389230731315037158937990393477937813832384167299260206768010113827843370432177823204051802021354476856735105...
output:
64847676
result:
ok 1 number(s): "64847676"
Test #25:
score: 0
Accepted
time: 39ms
memory: 4184kb
input:
5000 1060908140283541013245888192600010631685552708456164292614908505986842197764899377183662618610397275316175988006855369063828738809624059980852978342235894957407016210764697356445323759567892038560642666695593294909378068235791186540212051512547793737326942353251922108593809646186717444069399194...
output:
46089973
result:
ok 1 number(s): "46089973"
Test #26:
score: 0
Accepted
time: 39ms
memory: 4340kb
input:
5000 4167413337383512335342446844301295061283297832828337586399036812965628809584309280240335156549007875265018403232860390865650403559828858521226576098324688739416592074500021123122165578438715383733724065265859724840752630774162037584065233385787338015652858265386847420952773768786522984341856441...
output:
289963358
result:
ok 1 number(s): "289963358"
Test #27:
score: 0
Accepted
time: 45ms
memory: 4412kb
input:
5000 0016333155368124738088870770938980478519511839121409548927061239607054420424955716374905253395433974120004555646757520979538059659364833035441642423982778149708821441373452828856302141786564332166685062999047362082796733736904461408000518679191248454746816423311171496595881384512371985551985957...
output:
831498184
result:
ok 1 number(s): "831498184"
Test #28:
score: 0
Accepted
time: 42ms
memory: 4176kb
input:
5000 5092536296551794251043181638143747695055047667638655983429584258891712588224325674545229512946356577078967350285969472283180319383912962093190696463627527554628698850690973966211757510848419627816389188773320206947068778989020619318534488026535209398188789706361479060680484488911824233166170381...
output:
232548867
result:
ok 1 number(s): "232548867"
Test #29:
score: 0
Accepted
time: 45ms
memory: 4340kb
input:
5000 4250650491835895211380154911374118880219475610640757916147240362500104880620808530762344123980888292339437259581375290967595195746830677913147601662442399330928582487119875486342332667822985842301686413861142987548286348240942361774457164440066458920375413112071161055538460779044102959044496383...
output:
600488208
result:
ok 1 number(s): "600488208"
Test #30:
score: 0
Accepted
time: 43ms
memory: 4172kb
input:
5000 0000000000689078792067237718947428136594821842520489332698476953096081050443004774491088068653978931122890246667731895978262338006130108971352213349525758787905783267776002539885854055677272999660672296183028350453530189660455899343828445282255728924058584245940525190415132437297972695822279109...
output:
887505503
result:
ok 1 number(s): "887505503"
Test #31:
score: 0
Accepted
time: 46ms
memory: 4404kb
input:
5000 0000000000022121271882232360313107852566602611539514301356520582779830156937109065371076190844344608965131323524013303620896649114825312828542093066291828737963114945513196080146852787896344285823817341460491358653892467153045088134419113464433102015939811049514570760600972457269976090211961884...
output:
805027211
result:
ok 1 number(s): "805027211"
Test #32:
score: 0
Accepted
time: 43ms
memory: 4368kb
input:
5000 0000000000655258143985523409468362333040390212372889201638954055429475496420475344646752673292169310979974004259018721019774943143436225056989315666021154606929955509691052479829612484143399029185137961961904224760687081073181164608976833701710469728964824198019477823573078500411122321352408143...
output:
817305775
result:
ok 1 number(s): "817305775"
Test #33:
score: 0
Accepted
time: 39ms
memory: 4172kb
input:
5000 0000000000977853043576694047225399227210086922493669342733496307897953500774477296874716114502271719675269139177397229134428651178783123755665865371468690966481661122800434360623721854165798451817486468010819158274648686004500174373687929590147693675019891633373560050286228396315148221630242509...
output:
121593917
result:
ok 1 number(s): "121593917"
Test #34:
score: 0
Accepted
time: 43ms
memory: 4180kb
input:
5000 0000000000626847933851084471445813197397273635421637799221686455948052808565622535398102619895781412131685881963406264318131334291574165160956974488702833999982128858907022551925464777356511604362143099588141349054262136650241983023241186850500635027127232298038791110103217925320540465429578079...
output:
859770412
result:
ok 1 number(s): "859770412"
Test #35:
score: 0
Accepted
time: 43ms
memory: 4180kb
input:
5000 0000000000304243401410637355744802808733143685926175829233812528213453479871131108446674596961561046013094838367098551485599110034561978793633844518410906928604462778756766355621615924883101772853369939655287209121141140220603092065096713814992898390786602561069584785944502973388918962251742088...
output:
434661827
result:
ok 1 number(s): "434661827"
Test #36:
score: 0
Accepted
time: 42ms
memory: 4336kb
input:
5000 0000000000610523727147227044245934257508656780055358425742794275244952517850507397695762053339751873109506189007606141604459542156822164518307407582575075315832629466662597041565531419208169767059612454647764252183783064923890418860535482770645486496991346322389178352880274131087767972303098836...
output:
644040569
result:
ok 1 number(s): "644040569"
Test #37:
score: 0
Accepted
time: 42ms
memory: 4368kb
input:
5000 0000000000610091852181247077023000832216456399222387763619927598717508681275035226167283412004673572980957980402717453893826112768338773616062330558592109431953330116618467278798291497747305121371714461244238254762216799625177097143463130298124123226787267816764724839697760759349912767621877855...
output:
83534609
result:
ok 1 number(s): "83534609"
Test #38:
score: 0
Accepted
time: 43ms
memory: 4060kb
input:
5000 0000000000242616738203875233236973861419518431941561736955375287532653293772072421845606880661287146368249482401443956018202758259320445109639150994010196038940287579570474599000817155017574393956188924602724346439261731907670111733479014027966309087906395335929715951402141727143437701610426871...
output:
160784993
result:
ok 1 number(s): "160784993"
Test #39:
score: 0
Accepted
time: 2ms
memory: 4092kb
input:
1 0 0
output:
0
result:
ok 1 number(s): "0"
Test #40:
score: 0
Accepted
time: 2ms
memory: 4020kb
input:
2 00 00
output:
0
result:
ok 1 number(s): "0"
Test #41:
score: 0
Accepted
time: 2ms
memory: 4128kb
input:
3 000 000
output:
0
result:
ok 1 number(s): "0"
Test #42:
score: 0
Accepted
time: 2ms
memory: 4188kb
input:
4 0000 0000
output:
0
result:
ok 1 number(s): "0"
Test #43:
score: 0
Accepted
time: 22ms
memory: 4176kb
input:
5000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...
output:
0
result:
ok 1 number(s): "0"
Test #44:
score: 0
Accepted
time: 42ms
memory: 4168kb
input:
5000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...
output:
520894423
result:
ok 1 number(s): "520894423"
Test #45:
score: 0
Accepted
time: 43ms
memory: 4372kb
input:
5000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...
output:
53974188
result:
ok 1 number(s): "53974188"
Test #46:
score: 0
Accepted
time: 45ms
memory: 4112kb
input:
5000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...
output:
961014394
result:
ok 1 number(s): "961014394"
Test #47:
score: 0
Accepted
time: 39ms
memory: 4116kb
input:
5000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...
output:
388131615
result:
ok 1 number(s): "388131615"
Test #48:
score: 0
Accepted
time: 43ms
memory: 4108kb
input:
5000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...
output:
710918164
result:
ok 1 number(s): "710918164"
Test #49:
score: 0
Accepted
time: 39ms
memory: 4372kb
input:
5000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...
output:
828554030
result:
ok 1 number(s): "828554030"
Test #50:
score: 0
Accepted
time: 43ms
memory: 4412kb
input:
5000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...
output:
547595944
result:
ok 1 number(s): "547595944"
Test #51:
score: 0
Accepted
time: 45ms
memory: 4368kb
input:
5000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...
output:
515152604
result:
ok 1 number(s): "515152604"
Test #52:
score: 0
Accepted
time: 45ms
memory: 4184kb
input:
5000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...
output:
601070920
result:
ok 1 number(s): "601070920"
Extra Test:
score: 0
Extra Test Passed