bzoj3758 数数

21 篇文章 0 订阅
1 篇文章 0 订阅

Description


神犇最近闲来无事,于是就思考哲学,研究数字之美。在神犇看来,如果一个数的各位能够被分成两个集合,而且这两个集合里的数的和相等,那么这个数就是优美的(具体原因就只有神犇才知道了)。现在神犇在思考另一个问题,在区间[a,b]中有多少个数是优美的?这个问题对于神犇来说很简单,相信对于你来说也不难。

1<=A<=B<=10^9
此题存在版权,故不再支持提交,保留在此只供大家参考题面! 望见谅!

Solution


一开始以为是神奇的数位dp,被教育了一波发现并不能做
后来yy了一个脑洞但是不太想实现了

可以把10^6作为块的大小打表,然后剩余的暴力检验,可以发现这样做比较优秀..
检验可以用背包做,这里可以直接状压f数组用位运算,具体看程序

bzoj并不能提交,默认A了就好了吧

Code


#include <stdio.h>
#include <string.h>
#define rep(i,st,ed) for (int i=st;i<=ed;++i)

typedef long long LL;

int biao[]={376413,832547,1288828,1744956,2196800,
2647716,3090920,3526440,3951372,4366880,
4823015,5304766,5797144,6290672,6782004,
7272530,7758910,8238396,8710536,9182258,
9638539,10130918,10610575,11103529,11590745,
12080513,12565094,13045216,13523103,13996047,
14452175,14945703,15438658,15913605,16403907,
16892727,17371943,17858307,18339125,18810719,
19262563,19753895,20241111,20731414,21199399,
21684697,22170473,22655525,23128982,23601310,
24052226,24542752,25032520,25521340,26006639,
26480512,26967738,27450344,27929454,28401296,
28844500,29330880,29815461,30294677,30780453,
31267680,31727883,32207445,32681531,33151141,
33586661,34066147,34546269,35032633,35517685,
36000291,36479854,36928875,37398605,37865237,
38290169,38762309,39240196,39721014,40194471,
40673581,41147667,41617398,42050819,42514127,
42929635,43401357,43874301,44345895,44818223,
45290065,45759675,46226307,46689616,47111407,
47567542,48049293,48541671,49035199,49526531,
50017057,50503437,50982923,51455063,51926786,
52408537,52900916,53398017,53897101,54395976,
54894264,55390376,55882154,56370124,56858336,
57350715,57847816,58346901,58846682,59346650,
59846494,60345546,60842736,61337762,61832643,
62326171,62825256,63325037,63822618,64321881,
64821477,65319367,65818159,66315614,66811192,
67302524,67801399,68301368,68800631,69295186,
69792675,70292149,70790949,71286703,71781713,
72272239,72770527,73270371,73769968,74267457,
74763402,75261351,75759527,76256605,76751555,
77237935,77734047,78233099,78730989,79230464,
79728413,80220834,80714563,81209373,81704149,
82183635,82675413,83172603,83671395,84170195,
84668372,85162101,85646750,86134011,86626601,
87098741,87586711,88081737,88579192,89074946,
89572024,90066835,90554096,91029271,91513942,
91985664,92473876,92968757,93464335,93959345,
94454295,94949071,95441662,95926333,96400455,
96856736,97349115,97828772,98321726,98808942,
99298710,99783291,100263413,100741300,101214244,
101706623,102203724,102702809,103202590,103702558,
104202402,104701454,105198644,105693670,106188552,
106668209,107167293,107654509,108153408,108643571,
109140447,109631936,110124934,110615086,111104170,
111597125,112096906,112595804,113093027,113592810,
114091415,114589181,115087418,115585176,116080738,
116567954,117067923,117558086,118057868,118549357,
119048442,119540443,120037757,120529913,121025141,
121514909,122014753,122511630,123010235,123509319,
124005151,124504320,124999107,125496723,125991518,
126476099,126975151,127466640,127964407,128456408,
128955576,129444361,129941988,130432181,130927549,
131407671,131904861,132397859,132896096,133393411,
133888198,134385824,134870790,135365761,135853348,
136331235,136826261,137316413,137814171,138306327,
138803944,139294137,139789107,140268613,140761869,
141234813,141729694,142218778,142714340,143209568,
143704363,144199732,144687319,145180575,145654892,
146111020,146604548,147097503,147572450,148062752,
148551572,149030788,149517152,149997970,150469564,
150963092,151462177,151961958,152459539,152958802,
153458398,153956288,154455080,154952535,155448113,
155941068,156440849,156939747,157436970,157936753,
158435358,158933124,159431361,159929119,160424682,
160899629,161397209,161894432,162373648,162870479,
163366196,163847035,164342307,164834856,165316242,
165806545,166305808,166805590,167302421,167797533,
168296439,168794206,169291181,169787227,170282583,
170771403,171271000,171769605,172265321,172764227,
173259685,173756939,174255102,174749455,175244787,
175724003,176221893,176719660,177200499,177698265,
178195519,178676905,179174053,179669962,180151503,
180637867,181136659,181634896,182130169,182627144,
183125306,183622454,184112942,184610046,185104838,
185585656,186083111,186580869,187073418,187569465,
188063818,188559726,189056830,189540680,190034891,
190506485,191002063,191497625,191979011,192474367,
192969700,193451241,193946033,194440244,194913068,
195364912,195856244,196343460,196833763,197301748,
197787046,198272822,198757874,199231331,199703659,
200194991,200693866,201193835,201693098,202187653,
202685142,203184616,203683416,204179170,204674180,
205161396,205661365,206151528,206651310,207142799,
207641884,208133885,208631199,209123355,209618583,
210108886,210608149,211107931,211604762,212099874,
212598780,213096547,213593522,214089568,214584925,
215052910,215547464,216038953,216534065,217007522,
217499718,217990901,218484410,218959905,219446727,
219932026,220429515,220928599,221427505,221919701,
222413231,222911993,223409872,223904583,224393574,
224879350,225378825,225870826,226368592,226859775,
227358537,227847477,228346119,228838089,229333643,
229818695,230317495,230814810,231311785,231805293,
232303172,232801814,233291625,233787283,234281777,
234755234,235250988,235743144,236239191,236714686,
237209396,237701366,238197024,238673284,239165608,
239637936,240132946,240628174,241123530,241610353,
242099344,242594898,243089392,243581716,244056062,
244506978,244997504,245487272,245976092,246461391,
246935264,247422490,247905096,248384206,248856048,
249346574,249844862,250344706,250844303,251341792,
251837737,252335686,252833862,253330940,253825890,
254315658,254815502,255312379,255810984,256310068,
256805900,257305069,257799856,258297472,258792267,
259281087,259780684,260279289,260775005,261273911,
261769369,262266623,262764786,263259139,263754471,
264239770,264737259,265236343,265735249,266227445,
266720975,267219737,267717616,268212327,268701319,
269175192,269671136,270166968,270662426,271155956,
271637394,272132980,272626656,273118401,273606213,
274093440,274591389,275090557,275587811,276086573,
276582159,277074753,277572087,278069041,278564272,
279046878,279545055,280039842,280538004,281035883,
281529559,282026893,282513143,283009664,283502662,
283981772,284478850,284976467,285470820,285965530,
286457275,286954229,287450750,287934208,288427696,
288899538,289394488,289889283,290384616,290873607,
291361419,291856650,292349648,292843136,293317366,
293760570,294246950,294731531,295210747,295696523,
296183750,296643953,297123515,297597601,298067211,
298553591,299049703,299548755,300046645,300546120,
301044069,301536490,302030219,302525029,303019805,
303504386,304003438,304494927,304992694,305484695,
305983863,306472648,306970275,307460468,307955836,
308435052,308932942,309430709,309911548,310409314,
310906568,311387954,311885102,312381011,312862552,
313348328,313847803,314339804,314837570,315328753,
315827515,316316455,316815097,317307067,317802621,
318289848,318787797,319286965,319784219,320282981,
320778567,321271161,321768495,322265449,322760681,
323220884,323713304,324202089,324683475,325172415,
325665009,326128508,326618472,327104745,327585453,
328065016,328558745,329056371,329553519,330052161,
330549495,331039459,331524705,332017239,332510934,
332985020,333479831,333970024,334465932,334957902,
335454856,335941129,336433663,336912903,337405293,
337874903,338369679,338865048,339346589,339842143,
340337374,340818082,341311777,341804167,342276694,
342712214,343191700,343671822,344158186,344643238,
345125844,345605407,346054428,346524158,346990790,
347470276,347962054,348459244,348958036,349456836,
349955013,350448742,350933391,351420652,351913242,
352393364,352890554,353383552,353881789,354379104,
354873891,355371517,355856483,356351454,356839041,
357325405,357824197,358322434,358817707,359314682,
359812844,360309992,360800480,361297584,361792376,
362277428,362776228,363273543,363770518,364264026,
364761905,365260547,365750358,366246016,366740510,
367223116,367721293,368216080,368714242,369212121,
369705797,370203131,370689381,371185902,371678900,
372158463,372652192,373149818,373646966,374145608,
374642942,375132906,375618152,376110686,376604382,
377053403,377538051,378023017,378513505,379003316,
379489566,379974812,380427196,380908305,381388631,
381858362,382345623,382840593,383337697,383833355,
384329876,384822410,385303519,385778157,386266143,
386732775,387225366,387712953,388207745,388702239,
389195237,389688932,390169258,390657244,391130374,
391555306,392027446,392505333,392986151,393459608,
393938718,394412804,394882535,395315956,395779264,
396251404,396739374,397234400,397731855,398227609,
398724687,399219498,399706759,400181934,400666605,
401144492,401639518,402129670,402627428,403119584,
403617201,404107394,404602364,405081870,405575126,
406055944,406553399,407051157,407543706,408039753,
408534106,409030014,409527118,410010968,410505179,
410978636,411474390,411966546,412462593,412938088,
413432798,413924768,414420426,414896686,415389010,
415868120,416365198,416862815,417357168,417851878,
418343623,418840577,419337098,419820556,420314044,
420788130,421282941,421773134,422269042,422761012,
423257966,423744239,424236773,424716013,425208403,
425678134,426165395,426660365,427157469,427653127,
428149648,428642182,429123291,429597929,430085916,
430519337,430994511,431474017,431957867,432434127,
432917585,433396825,433871463,434306086,434779290,
435242599,435727270,436220526,436714737,437207061,
437700549,438192939,438680925,439154129,439626259,
440041767,440513489,440986433,441458027,441930355,
442402197,442871807,443338439,443801748,444223539,
444695261,445183473,445678354,446173932,446668942,
447163892,447658668,448151259,448635930,449110052,
449582996,450077877,450566961,451062523,451557751,
452052546,452547915,453035502,453528758,454003075,
454474669,454970247,455465809,455947195,456442551,
456937884,457419425,457914217,458408428,458881252,
459353580,459848590,460343818,460839174,461325997,
461814988,462310542,462805036,463297360,463771706,
464243548,464738498,465233293,465728626,466217617,
466705429,467200660,467693658,468187146,468661376,
469130986,469625762,470121131,470602672,471098226,
471593457,472074165,472567860,473060250,473532777,
473999409,474492000,474979587,475474379,475968873,
476461871,476955566,477435892,477923878,478397008,
478860317,479344988,479838244,480332455,480824779,
481318267,481810657,482298643,482771847,483243978,
483665769,484139891,484614208,485087032,485561378,
486035608,486508135,486981265,487453395,487875963
};

bool check(int x) {
    int sum=0; LL f=1;
    for (int i=x;i;i/=10) sum+=i%10,f|=(f<<(i%10));
    if (sum%2) return false;
    return f&(1LL<<(sum/2));
}

int solve(int x) {
    int ans=biao[x/1000000];
    rep(i,(x/1000000)*100000+1,x) {
        ans+=check(i);
    }
    return ans;
}

int main(void) {
    int n,m; scanf("%d%d",&n,&m);
    printf("%d\n", solve(m)-solve(n-1));
    return 0;
    int ans=0,cnt=0;
    rep(i,1,1000000000) {
        ans+=check(i);
        if (i%1000000==0) {
            printf("%d,", ans);
            if (++cnt==5) puts(""),cnt=0;
        }
    }
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值