提交时间:2024-11-12 14:39:30

运行 ID: 34656

#include<bits/stdc++.h> #define ll long long using namespace std; const int mod=1e9+7; int biao[]={0,504577934,237651626,779496610,95467516,983629714,1935433,280154900,794180544,40539778,352365973,200959196,988636579,287602724,737001625,344065712,6290245,26141793,578030567,799383408,54380396,615436953,574212538,44402142,595820464,529660327,295552674,555387301,894473160,188230756,584131582,662532138,754837544,929431390,132782766,643658379,855035599,415582145,460605247,831816571,623918184,375496436,450968554,313984043,550503230,571650326,425485293,594010013,908716020,56027813,166607116,112646018,858860672,974769503,784706990,238202948,557210176,929773668,360023269,304071798,669512130,527433135,490827860,555728967,699499098,6410338,923615946,540375423,753246843,895739313,325159295,166754209,152551396,244072866,471410152,816993741,147180863,909705431,95790,533911971,753209382,201562012,905796298,897170580,729787086,591693407,177178074,716369107,846388479,380426957,786480147,535390503,894418558,760970058,206111704,278575868,718383494,256207912,523544294,241919680,606110136,489157128,942489221,385959015,451369917,240566814,976990342,544642639,377346208,574766719,366282384,47421703,851936732,539400022,443695563,661362568,921648674,930766981,484081218,939774826,647207354,655327361,817751523,670911648,999832295,883205225,338370911,979929048,263601022,193232256,957861975,368853457,29077729,542144490,841685673,666374419,954462477,808528675,835658189,62537994,191391873,120862004,232842586,288498727,471319161,608358847,977615699,304726709,25207150,3940535,836384727,411530646,52093554,109096714,574443423,607702659,482501782,803008454,988025265,191302267,501302875,823519575,175328428,476182702,548972821,431000804,44493070,29601295,402955064,539127083,94500666,165982202,181173898,110047810,255329497,938573452,960579714,834207782,31702612,11802951,536241900,421436603,692943705,244460774,824780889,160791898,951809064,869156960,463388157,861497325,130216028,371808390,725932052,148975934,780981186,320080665,71312911,9964858,352775131,226527182,809855554,711864263,410260267,428150647,420737348,734642067,268656194,618658884,195467363,242579884,581538598,943987338,979302126,564610621,852905629,26356229,177900567,193290429,616131646,509583703,380362239,137125602,547477048,404144305,353843161,860243100,785564530,53731515,940161190,735522414,36729258,820748280,577549052,485494842,517357284,607135609,106663556,229648711,499636225,319193216,247903675,958713745,267786045,38371274,852518700,91205577,889298865,938504600,626707588,921496905,892519788,65844499,927418238,569049146,604209926,890404539,275898148,953834148,792148174,227064319,204555086,905812346,863749206,452699925,21354043,428483311,506546743,658338317,564001288,461645410,68424293,885050296,246076371,524916845,990262632,80707866,628495029,692169615,144816702,784504739,393328003,157498024,556697541,34525285,967104400,268090587,85641440,659128624,663277586,47194923,423707465,394828687,934240694,355814291,123978408,487245579,269717860,499860346,461675110,517798646,194549019,665760987,994516338,196616727,752820886,86172164,112253578,454546209,177780065,415948980,620989732,395905453,567538258,3892753,47291611,648568342,852353795,877955383,883428880,658882475,478195705,956173561,803028481,216347302,156444605,556124156,760919040,326331964,434903056,392022838,859100308,461752210,605917686,351908043,327854093,206262371,134744361,777089717,689914914,550499460,617534472,954636778,765010581,268604181,549905502,801478257,877869992,363976718,971466809,915412680,107927246,644751157,795542203,676183807,900695424,555272286,834275916,148189797,584928454,946776247,116421680,921894102,898988826,941939326,648034985,571988223,10278188,867326979,714536165,134930057,260826255,926342414,315373005,316357131,574632141,680582695,329894052,94366133,741585293,179812280,708718589,879223085,10491059,212790747,647565986,367064857,17678439,845348065,815157574,736087545,222874281,268446222,92827500,787167257,460342497,693008980,285369891,555798122,395818459,168355864,142396159,786335725,964189956,266815777,94675761,231506599,865408569,686432650,280390226,276274445,524476469,449720855,641379766,493142051,325385331,183834372,224907805,664489613,320086538,849927888,819159891,46202621,30718059,621399478,2316160,377381994,294184800,131413222,725100632,936190298,739958815,212349142,332546685,871564698,558676781,214190837,549388348,80437611,258159075,545481548,160892198,110086179,391360832,261827756,618769103,537291755,817916667,36343995,391913725,352195413,126072241,147390855,501488241,929207590,799325887,480562228,615229626,490714046,641815973,676093347,458878850,133965342,914938991,564858740,429475755,230076615,223047422,418215972,496559260,575752510,137121038,363023354,448692839,87517306,414236350,304784638,536006053,558528761,691470998,967208781,556477335,634361737,352667797,75648747,397122969,868558051,811579077,136601851,792218508,229035024,96451566,44458156,478524413,21128107,782141767,346250400,699028008,166640401,585220425,463681379,707257004,29000285,625561248,507773325,246714711,145042582,766970520,469878082,512301648,958051090,915666954,124460395,331980947,771543286,133631272,609737058,960846499,169054203,295686870,986605961,214426793,260470951,427109919,445973552,994165596,455667970,4969646,276161521,436998397,75918399,735795717,40768204,65203956,499705844,921219452,400253933,626440426,659614230,385136121,353373672,94988197,878894551,355657852,393829947,304822750,747057753,729093544,538285740,190975742,415766384,223017049,386309987,615133411,862881846,430582768,510459512,610284374,592828912,648514519,745679979,110511765,701426068,3169599,327467773,275242021,596347738,316106777,431790320,58808528,290718984,420382333,288840184,963032244,485580098,152062290,714648955,641703351,800793437,248627424,162535493,897647190,296392813,122293236,988329918,550687492,706523250,826364435,654642561,251991740,433134877,541909917,752188811,700535206,153316054,313412918,151532747,477621706,657494191,950363344,663027185,743224641,916477991,895030882,88503475,78910811,785570603,111365233,524200584,943542981,526178994,365715535,404966217,349007,510598201,64808288,255142512,137021708,893574316,122542293,52882754,202152076,441585530,393583184,880690139,686318796,370665085,359431757,655627764,867254731,238376969,175440049,573002681,300812412,767077253,162018365,783546813,226265964,637152359,888083366,197388090,334438989,374021194,545320064,68044087,130046659,367579453,354161454,9759012,206314203,738256369,870099175,640880000,147720841,862005775,975568323,296046829,15302729,539422308,618971282,591896672,378771048,172906012,646488219,596300821,376911949,872440669,864943406,188269454,471766846,187778265,856117165,472110048,950909925,172032354,792490662,728314794,581572436,445172962,213882536,763561718,729361247,467408883,78990180,655463184,856648220,859512774,26471224,175295111,282066166,74260627,33193313,183722308,885523046,381081001,838743854,75004934,860240939,998282081,974450291,668222731,149657080,55306573,845141271,707495114,37425716,226476874,290182611,747452140,900502163,134641091,873837607,774534526,264583141,615076145,767156684,765707658,809396415,474576998,535068534,413095243,592176312,369147101,877548257,684622269,894899472,276078652,548486982,411656160,424687279,698840650,938576436,295324616,496349347,347416620,615304613,398824451,15929034,501680708,976875552,514108693,885641783,30526398,815176477,698572702,596629312,934518288,636107207,968364098,736294659,649027298,942643059,756233319,243881195,182267872,406888602,777675870,199833089,235350489,769414610,765578522,588684240,321380351,171980259,835376880,620572547,743855593,233044457,868107898,175416625,639007856,944160075,603755864,277516604,338694500,641833724,316136859,938778347,323511013,716713199,467958405,203390511,491006644,53108966,832610086,814355318,626703829,249016162,582878157,258356471,314586586,627512599,692886598,666985930,904243840,913546468,99113083,236166726,708133076,976120359,855782053,634351224,555650823,763738503,806153192,765692903,708144848,128766423,203314080,616529971,939486211,510612225,107510983,734643300,413359455,398079892,869070611,923700772,384381851,857600966,269884577,966991477,629771743,427159955,619894226,522032673,365761138,288825272,745983789,350872644,257195114,443584872,627699244,452256634,114903245,125886025,128170186,499975371,945551917,53980079,476820095,213891096,472982879,562684932,330220810,90014604,508347739,644834856,422073908,600271031,363878424,552359093,83877102,5272498,982381601,545880485,517921477,728407498,132743704,452441858,66125607,169200883,77891035,280107637,875195342,7676618,351416322,288836528,605642726,439370176,183061111,516052272,293581400,674269378,11027673,18676991,527962169,213149834,808954349,385249201,463751609,592221480,386906202,983832237,671519131,684946007,865694767,26317271,195991232,798014936,337661015,815509498,927596529,667915120,123939922,155841489,534527217,981080452,623111913,725361751,425064082,336548650,309968180,138115061,734284364,535478781,60653629,216941923,60459454,361377855,679534385,18106749,787980859,963519331,778164069,799122251,939893051,536010478,681642484,193369443,836717198,49235245,347994645,228881376,463597622,965863085,493259951,560446324,373794492,364479765,158639739,350878260,753615151,710757078,505793825,897461303,45865489,832726088,37277176,388331991,692177697,334559405,568361699,228809449,31737050,437501815,665611126,942507557,206360518,376558674,779857067,653439065,27260645,521381807,669056438,301655011,721087717,161114661,71501698,224589599,317137706,770480559,941044222,116754862,270550503,552318675,993005430,561591753,485176767,604824422,186139584,255147152,391411564,423532431,414202267,806513584,512338208,635976928,924396194,441225508,140263017,204496791,673472342,758472143,471498950,965637135,706918206,949217106,594867748,772504868,195542584,575228726,494155117,744259883,787663956,941610850,567826042,912104043,920112180,520736827,107942442,617501051}; int calc(ll L,ll R){ int ans=0; int pl=floorl(sqrtl(L-0.75)+0.5); int pr=ceill(sqrtl(R+0.25)-0.5); for(ll i=pl;i<=pr;i++){ long long l=max(i*i-i+1,L),r=min(i*i+i,R); int f=(i%2)*2-1; int v=1ll*((l+r)%mod)*((r-l+1)%mod)%mod; v=1ll*v*(mod+1)/2%mod; ans=(ans+v*f)%mod; }return (ans+mod)%mod; } int main(){ long long l,r;cin>>l>>r; cout<<calc(l,r); ll B=1e15;int ans=0; for(int i=1;i<=1000;i++){ ll R=B*i; ll L=B*i-B+1; if(R<l||r<L) continue; if(l<=L&&R<=r) ans=(ans+biao[i])%mod; else ans=(ans+calc(max(L,l),min(R,r)))%mod; } }