2019HDU多校赛第九场

1001 Rikka with Quicksort

已知递推式:
在这里插入图片描述
给出 1 ≤ m ≤ n ≤ 1 0 9 1\le m\le n\le10^9 1mn109,求 g m ( n ) g_m(n) gm(n) mod 109+7

先不考虑 m m m,暂记为 g ( i ) g(i) g(i)
g ( i ) = i − 1 + 2 i ∑ j = 0 i − 1 g ( j ) i ∗ g ( i ) = i ( i − 1 ) + 2 ∑ j = 0 i − 1 g ( j ) ( i − 1 ) ∗ g ( i − 1 ) = ( i − 1 ) ( i − 2 ) + 2 ∑ j = 0 i − 2 g ( j ) g(i)=i-1+\frac 2i\sum_{j=0}^{i-1}g(j)\\ i*g(i)=i(i-1)+2\sum_{j=0}^{i-1}g(j)\\ (i-1)*g(i-1)=(i-1)(i-2)+2\sum_{j=0}^{i-2}g(j) g(i)=i1+i2j=0i1g(j)ig(i)=i(i1)+2j=0i1g(j)(i1)g(i1)=(i1)(i2)+2j=0i2g(j)
两式相减得:
i ∗ g ( i ) = 2 ( i − 1 ) + ( i + 1 ) ∗ g ( i − 1 ) g ( i ) i + 1 = 2 ( i − 1 ) i ( i + 1 ) + g ( i − 1 ) i i*g(i)=2(i-1)+(i+1)*g(i-1)\\ \frac {g(i)}{i+1}=\frac {2(i-1)}{i(i+1)}+\frac {g(i-1)}i ig(i)=2(i1)+(i+1)g(i1)i+1g(i)=i(i+1)2(i1)+ig(i1)
b i = g ( i ) i + 1 b_i=\frac {g(i)}{i+1} bi=i+1g(i),得 b i = b i − 1 + 2 ( i − 1 ) i ( i + 1 ) b_i=b_{i-1}+\frac {2(i-1)}{i(i+1)} bi=bi1+i(i+1)2(i1)
可以看出 b i b_i bi就是后面那个东西的前缀和。考虑 m m m的限制,我们的递推应当从 i = m + 2 i=m+2 i=m+2开始,容易得到 g m ( m + 1 ) = m m + 2 g_m(m+1)=\frac m{m+2} gm(m+1)=m+2m,所以 b m + 1 = m b_{m+1}=m bm+1=m,只需要用 n n n的前缀和减去 m + 1 m+1 m+1的前缀和再加上 m m m就可以得到 b n b_n bn,乘上 n + 1 n+1 n+1就是答案。

对于后面那个的前缀和可以分段打表,每200000个前缀和分成一块,共5000块,余下的暴力计算即可。

Code:
(代码中计算b时是根据分子从1到i-1,所以是用的n-1的前缀和减去m的前缀和)

#include<bits/stdc++.h>
using namespace std;
const int mod = 1e9+7, len = 200000;
int T,n,m,fac[len+5]={1},inv[len+5]={1};
int f[]={0,77238457,513254914,735074456,739486466,903236543,197267783,665252650,328875726,217047248,588865143,662528622,2334966,578145734,648343034,654159909,861586892,844261204,908901175,99526397,901453314,590008874,111326801,9024868,29215409,645734439,10112313,408096890,128641507,406012362,476817918,109545171,570521241,179667062,690225515,460012107,771295919,673914228,273568797,633351424,576975110,821374123,31156780,925337161,953186899,592375965,183469575,741258024,754069279,579571970,562966670,945029672,619716832,402642437,735966112,603740807,479309495,369184233,924964276,980367566,615265315,907871099,431120098,743037801,395722635,150845912,866909190,271009475,176530329,57962793,676154985,700491921,472152034,926296817,727447227,610860889,889498998,324383048,611367721,64034519,137063400,76264107,172783980,476294275,101909821,682677709,699718934,796661328,838994023,476732795,388573406,970320176,476650513,534727303,798858099,39477457,286559185,335809071,758946390,416536799,196991375,41705338,714716268,234209392,126839109,314495345,625481118,536320165,339203323,646254382,734476918,447520986,859435546,423125711,370933705,294800575,899957782,47407648,807422054,646328372,41231131,911063270,441705132,375835007,789249739,341059229,935222910,570967698,578673271,844251418,825258218,64997260,436922424,302425604,802006367,179797242,42739376,419961334,108660299,87338003,4096118,78658379,796967186,989291139,366101172,535254783,834037289,976839115,68555305,552260552,557917842,855948152,50076389,646834347,275980580,627901149,930233949,213187135,50423037,428926092,83858366,194022139,356128412,101003466,69855490,944867928,753128323,688931489,385719251,312074582,4505002,133791877,909919087,381599168,841942249,270336417,192865136,46193770,34816563,900846558,56185636,744919917,551847264,859840957,532931077,751627108,215126905,362068494,973749163,385466466,631447365,373239943,752523309,737604328,93333298,475776305,530124222,148045541,612571583,860174188,87402497,112166337,856918045,708005724,748361742,937552852,889906878,469910456,707463513,950019213,367710969,133297701,534221683,653390848,423251868,123204678,298278488,743344142,113387558,405905626,521285535,924330210,750133849,572038173,807974342,194873822,753315919,992382603,789370898,127212023,516650730,179396923,30037319,710311113,67304047,73802993,429083858,88328882,713183306,447965440,738017052,421880728,399126515,710617224,406196098,955166422,549320845,199367780,434330606,835969022,904768555,399975373,553843088,473814121,895676905,115020902,451644534,882034866,67226040,171609200,839269605,456273823,532316115,205900676,175710369,205320764,164092502,76693382,994037125,593173988,577177086,351547650,580288266,654402761,638571648,239014487,263207835,543634249,771254632,294262106,753693367,687894532,705982690,424742296,759829255,320386208,113239248,326948640,511223054,613446517,3917161,803504319,490012786,618302906,948154196,18742978,709323049,926974354,709105800,164650266,921247297,412574133,143181162,747782557,986286808,367569830,967707005,92566627,603246700,802434104,719145967,135055677,52799410,210595853,985410019,322410978,34424624,734340726,999429856,906088572,481321788,715025983,62744449,756423072,795532478,60453812,418858445,820250791,891280306,162848277,486459067,239292379,748670227,852829799,993023279,53622204,970723930,423468930,391686297,680500817,316970295,212556561,462230312,735179496,318895180,123538323,742799706,346761691,219073350,656995162,475707948,390564285,299195623,385631219,404333634,206144738,344970181,149988149,386187813,991824491,907686296,710859355,385796090,684742371,683224319,686185536,995017583,326411248,862400687,17031260,415645873,88072135,166427651,745955312,81482250,658643546,365927585,605749368,765130518,153765706,549958731,628234938,180869495,202428931,347631393,918246632,43918598,822062174,728159694,727530368,743970206,394874240,310521438,708737949,288897882,436863622,599523523,841028226,941867336,631011017,666407559,609134317,568574374,658260303,236613244,812263577,629600640,279670310,616578811,652885412,887432143,653774719,768384288,889815812,979500529,742623309,741179815,149969660,433316336,319268639,451605629,603470943,827652948,418095531,320561091,310510913,462709271,901094288,530504645,790280647,820431559,560749711,410585617,885342238,445896648,805243415,815888094,216189173,508854098,858056271,61996706,126129716,883582498,285209486,91465057,744306140,647196500,402421122,68152758,648946799,377623444,475045269,621876768,997630007,465952685,121198569,348855592,40117754,495118545,99370554,699252362,845142629,539913764,117974858,581206699,605777689,843976002,451230278,391985606,233812627,492344560,565494397,731205611,695071790,413945440,331153144,719792342,587607406,974687614,258455080,154447643,249419638,809659319,907093549,9934367,921161760,294902945,856941877,365592096,242077505,727227414,152650837,428580889,568770178,640460277,798436342,778438873,162051364,95483926,575735143,616087699,981255618,481563909,478369051,512448393,22766957,766658185,867520877,633607554,421462114,220736546,738912351,878603023,238430,991122040,596770897,996521313,277329138,298906184,439555074,984382164,544149478,381002042,941939568,915158857,712701233,362333067,899154087,616040497,654674307,676026149,682344432,761454877,594502082,436029384,451151351,372666845,22464060,365316967,771432654,169196597,127769255,374656729,107390725,564100932,236866281,406147451,890985817,823763787,574746245,700149351,351605303,694154854,429595327,492932540,207494416,398191623,37544121,445509257,862183909,363980561,44969706,952711020,299135709,316395598,211172066,564826444,12285014,194568927,636825765,519798075,237565439,31761902,282094883,121510495,871855163,76045579,449795903,455516829,902113592,212452302,931255198,27018894,900022540,11743557,421274381,177897093,426227221,202336881,824164436,78455423,796077405,961775940,539611869,691609679,214419872,943935658,914980141,199852728,337342770,696875255,774259571,532745512,362737373,136712086,8596782,141306372,381436712,47438369,384289811,39718193,972797120,790275546,107582403,509613838,435562437,903927221,615849404,199262468,671112153,814994344,503787721,572569888,949611720,602614204,681997679,235054715,529865874,432972151,196348922,540386361,518401344,311174086,808150706,550670497,23157643,845092876,343849749,449103942,261045650,717294118,566730669,433016603,279050294,282429435,595124657,320549196,500144240,570281211,545824524,53744750,311350782,948762593,598114692,711399192,774398511,225218423,655534951,349226525,960548025,187665855,366059752,442324354,770345556,82294823,778160874,530280027,393411255,53888533,121963308,771672795,191000610,26346199,113615150,447782161,910952130,444169657,863714518,277092918,663925577,345600489,653369058,663200052,388637056,599534753,905617496,200792387,933984859,487098977,916363013,486340371,232388384,753692290,930970200,672158584,94154713,456522797,515193649,429110521,740558386,244213587,223078567,203025415,86434109,308171219,603174650,233367133,369686240,510890007,582219985,53515988,373285527,343819840,364643012,173813,47388295,849612695,416233769,398401953,584852426,840817407,381592707,307833320,182206627,672805230,88113612,446894031,797821650,353012767,106849243,754260324,259238544,215681007,49218033,600553725,709057613,336565824,451466469,964053999,259201858,584680976,817212300,877464213,418737029,362923118,614981459,62141209,211065278,385663989,612350626,980931358,663382351,420378828,738607710,487277405,522829584,395058761,167914999,26482997,526594294,391262785,679333850,601498729,667995045,549634715,931257379,823805472,411845960,449735053,181547889,171180466,948476432,37999002,375079579,11139499,354231279,222170147,32470875,982822424,302338870,366186526,55833337,760900608,280786213,522628908,69191213,232203134,143755458,947583899,933079456,716710094,645763162,172440308,189476323,141906262,874729668,198939007,412206804,677670379,905402321,620778988,679329801,937956052,504841511,311918529,112969895,420426900,250971619,489514046,160457847,345337726,190172027,267404455,752785030,191233118,376907372,557872014,361001843,938050328,383714831,262990559,189980784,144073993,190054797,611248504,435113734,399703978,283825138,905310150,706083953,42378890,554650242,347996602,562515629,193475341,453774289,472118914,59447075,454485655,667499088,495699353,835443063,27202592,599389692,220024529,650513805,445709698,78652460,530513462,953633443,467326170,599683779,928854060,91735923,362793455,627503109,857466846,382796078,778281405,734543018,324633566,864319927,229444679,480638636,566604552,312085259,941658999,108445540,99434656,699109751,25106152,325517051,582366893,549148865,408512800,507521331,235521050,190651147,392416482,114736794,950418321,766354965,869827801,873605546,192560348,200374266,381303869,381230760,223125038,5530767,416408898,415375061,288707797,836088269,697080465,907922931,689895896,285666732,430802439,420508518,204319525,43422519,109602367,551461566,683432065,788746400,600547897,81986484,783575725,577332498,810685227,143323705,421433084,655911818,717725487,877053177,626759912,480756341,446912101,171959709,690866748,216524155,124896446,661462589,252383054,885153561,105186205,42740009,414551640,956878136,352854431,430614984,550999766,145582980,190440567,250416564,289111118,657525094,540613265,944178855,635262324,555288049,1282047,131921780,319665752,806455496,13592763,691136146,425668145,844699463,419113417,22042767,15540955,790314500,339925429,870429236,514768289,679829281,189280443,652095503,503179402,970718114,424221648,921455541,638221376,525709384,548330626,356288307,492492272,741507730,621606901,504593980,671283394,123067488,229168397,468402254,459575944,588755716,6934129,732911259,741458052,667305662,725159889,44697913,60819402,823646852,368104926,349616911,206244745,93549950,856351849,762120960,918717424,810941783,4255343,332160472,163999214,627914087,845339440,712386665,60671180,861100992,282195019,788525625,193392970,529943098,680241277,20684257,760292293,600552135,472529848,164853818,687160025,543409019,249527467,920829348,296543892,313521690,435572316,889788393,774261058,86943131,51603225,559880156,531403967,453601519,200778844,583719876,234173614,863894431,241462155,153364799,546066863,548222838,451844023,281538643,601945475,169950470,237017024,305476876,787252152,119694754,730038674,455385432,494964363,184336972,493044424,784643225,939840403,506515040,484282770,890440917,192947372,666318806,154023214,223985179,672417810,492497001,437517592,107331171,382722557,303217078,327340714,620798117,908484976,934657775,383759792,949232347,805969674,29001975,217284148,497874419,267364110,210931906,183009491,897536668,947271982,200734530,537143407,611915170,180379158,948910638,472653605,67658765,801057592,480662180,116946120,560268425,168717428,327889167,543478745,359107968,372401568,582930932,642953175,664905600,800054227,551097384,324766070,574196401,442309834,187886209,835480403,482285819,145161482,13806372,705790241,766755718,127014423,798322972,130147394,52478048,741001582,221219250,276144866,415080820,669064263,269629832,495498968,734636111,377396184,901462334,489270894,644718690,544467587,774507543,707490643,112613964,377426291,80185412,399313407,155613214,569195276,524560065,466993021,376619188,685265395,647856131,399533629,382323260,714320165,769357586,933135057,592114633,209393399,210378589,668369498,47825441,473503255,877529563,382594474,823481952,634693317,107212207,336622229,224470661,597185948,52518821,499652655,615406649,348301594,173618253,276577013,360953973,673538471,723250751,143349369,434585945,449451663,423263603,148206586,731524032,955895511,996096164,636390358,205494397,216179258,625033129,606226735,485238557,596902356,767757906,108161368,191850159,182461527,19876893,585960248,992960737,367372730,315147821,461255659,86177527,569013474,550054242,392856613,876792565,185982919,422411127,501202053,146460137,542772749,469740761,738048758,342817880,95417844,661224596,242566540,693629068,669867081,324252867,598805350,336589841,616022504,119732297,743424876,794327247,809762360,415798384,782442617,701713199,639434939,925312374,787440461,699065900,734796879,444464631,508392436,178543441,13799528,57352359,111209676,463722475,212332477,341022473,446638592,791160182,645181414,987712818,68312659,12645854,35358930,987697781,192707356,198678812,788534983,737929446,129631247,194333168,393875348,109341762,60948891,619231154,313720993,316213750,710213506,445391702,79315702,868665514,101271405,895233814,613382269,265840595,439772543,669223566,304867753,152273533,220938425,381061387,266208700,842675283,19024523,895096990,65609694,643951772,842020129,487043459,189996994,574275252,1083596,951995682,177306178,7036197,306816289,15107523,819329638,275487177,281403537,275066406,779740703,495827672,943047348,660445078,476998429,412729672,966398535,691601562,456372234,46460980,646353504,718718371,280397020,672798588,205771917,447087080,986007649,333161206,2075786,602438621,582108827,649522746,518653754,544802478,733859093,386073812,309066644,332475208,410524745,733984560,7917830,453118717,666118202,484700673,262850035,617084459,302063023,397765901,793249264,366510490,89308157,832879706,761039835,940100688,262067466,597260927,936931344,156184216,818083414,43237407,450581603,74342958,777802769,171918301,308840548,907657534,126764098,968576736,666560553,729227199,1174474,257399816,560191244,184158559,33578548,729133489,147404996,176371547,828168377,571371631,399715234,365335139,967387048,595459466,380514848,488641860,616276626,891986203,618401948,503300308,325601424,519388998,419406480,757783140,516938166,524089077,673030920,134796834,809291207,924604708,269055495,779670350,60198036,403835888,560581766,279053386,865270274,619677403,547461521,272227666,285256679,849427601,550611814,921684059,398283174,919944339,796816482,231468555,110031574,858935435,439796474,221455179,739201661,812374488,531087193,168895682,89423837,854959279,42416939,766264130,15305849,938948090,517748971,897835144,330756084,999700782,438834933,883817160,245990347,579475194,857451448,213301963,989220986,542679096,507839949,188752092,335293367,450993819,805281670,538126521,649554129,275509141,435747299,653257447,385809469,276790712,66207622,820187422,751357602,586893233,440875452,733083615,381278577,181815715,760227105,260183486,552994633,597757824,739272118,13674749,420941871,300013429,500132262,176496002,139753474,550417638,87810994,965057542,375758975,977497253,324499228,723345408,900223244,298753373,438145620,682260021,415495388,343161727,437126769,310257413,961307165,791867831,435442009,581344907,46302492,92404722,999088588,302793494,197036457,914566307,520265535,52898307,909189411,477465464,843687276,425877312,274230646,824131657,837619524,596420159,679426906,525971515,273335691,990947537,425862886,467878762,622172956,752693913,484753717,562130206,359057808,269382038,712761532,70359047,2786028,2151921,834775232,970151552,709707547,708682728,369834772,272884622,151510469,383538580,125065467,808587289,74448800,568781549,722783093,550951366,366802045,688729090,125718514,635081380,402441338,90495345,71915532,417171995,5491514,794997063,966472015,643484558,108065688,173012937,357216635,79103985,349347162,459779228,183743767,467120747,417648606,116770370,967919304,187294394,154194311,658991574,525906416,322970456,169255749,14064822,220627351,82655763,242893110,718506669,451165792,480985979,252098320,825431203,909233041,474517222,912850653,508852220,496528683,29543013,971699868,849253888,43393515,902400200,362212041,44334356,131492531,797661781,490971547,906628081,43504330,472973521,667488796,532632128,562279708,58385671,302806863,736493532,377564538,179448904,909834595,818163295,340270455,921671827,182604556,419428709,793378280,80103483,534963858,945389946,837787188,170490085,826717236,403057893,926721614,4136821,617484098,613496752,102438679,618087471,590548441,215307705,444356797,787938936,566798,268871397,480187489,507129146,895255779,190668695,387596279,970037227,864060153,62824811,709364830,504937358,268208157,399889277,952745895,474175569,928060607,698913330,489236486,957333659,571162984,937157616,189241078,513868799,485186995,719784148,214194610,196313650,58027058,861859385,441855019,311254983,273547873,240988090,798305238,838438062,676536761,638919658,114304995,515040525,583639862,950421347,217258,72978895,550547969,519115047,451924128,94281243,153694274,764806341,249998472,653977210,569545890,150524341,322131341,436615542,378797233,614676043,447069434,363974146,816122097,341399393,465005970,303447311,233226381,369974013,522468544,271745836,280220320,518300292,146323768,234922867,231899801,91682851,912549452,483494193,775007606,60413376,791858064,35291406,669463566,3935558,824988709,776237441,963834179,827513246,36891734,681086816,93285434,861508021,677065581,196946424,770882611,175354404,411014869,451415697,70939645,562340613,293016412,966475528,787464396,584965742,730073523,226059667,607239488,160708328,811258713,874981829,895216774,419196824,891177074,305712369,104075159,231355468,396580213,549669999,643063168,919613125,487346679,886942428,383352303,569064651,804385445,77964354,789044831,220160683,686496689,978313672,859755608,904072681,135778954,624549476,274507060,594066651,221770557,750725358,818126604,574296002,314938153,32602534,833716635,205364031,285830487,443894785,672358836,423342673,197754869,736983105,109276162,163705661,742781525,875392186,902421842,248892301,641303981,106923755,168282967,480051093,694843631,129713898,530995118,913588957,964095105,465273102,643520438,642561080,608755034,504140624,966495473,704139884,973881991,964043485,815299725,503505071,1973947,910127795,292459557,91170775,594946485,298108120,391922535,188571612,399025472,230923330,323602319,399940856,739303143,631554732,641315226,289487311,255544089,631190349,792453451,72518255,445259621,124543171,315521723,834034228,528055357,516522624,316099340,157900889,838363522,755389617,930427131,186329025,856458001,182959305,559593264,692058263,869538913,364079292,165833510,720363952,185906511,122002371,954862113,72728004,585213850,465700779,211799131,989022976,741749193,38579243,341643404,38294603,805342838,655331974,493622885,963256010,933237412,219941974,536500856,612201703,260036251,478682652,732057556,747708416,490684075,889669295,686710791,617520545,680695609,400988088,825692879,213295841,288515646,782810658,578581430,408749021,734620172,562946376,918920470,424650333,422094276,357681749,90746692,83317516,778256695,708294185,329383943,263141047,503485263,400687449,174196231,572467364,495132993,502559627,257309961,636088237,334338480,219567443,954298413,725940772,143153449,960894021,612099760,321132917,463231176,261750438,648286901,987719989,665640256,846038390,324710938,767898530,571763794,145004979,862698923,685881132,344545139,62643051,173274102,300119182,851977846,830140584,159778226,200748001,105281117,145177522,968087248,113979488,679038890,665673810,780277797,157284714,984711904,716877209,808988672,912317944,853537327,533397522,998302295,843624625,466734724,612844233,825019801,930325524,539120856,295642906,448270371,539993364,36190913,514425781,596092168,61936626,207237399,483480923,278007665,999356444,614967,251714181,25144852,810313140,830177875,134862964,919956402,406539496,302165610,315773412,83207456,747508948,459482947,974503553,678779835,253401682,341261734,247794485,875872577,130877255,46124083,675821410,64131892,786767840,998561531,754088837,199085167,138654790,638636084,260997001,386077069,942296994,944606570,458976606,561734998,114316446,197668709,707383364,811992257,683249616,611497777,819896625,494265097,315111602,130144187,373868296,280937653,93949764,763702039,738860148,817542170,258552024,59254609,557726064,679111812,150580427,854982958,78494226,964489018,900435043,199181886,371761433,947888238,836203143,533066735,389135028,221248162,835090423,212563316,869097766,557770610,276286459,60487457,752909528,397794821,574406137,58878875,870609435,428416687,110106058,896219363,55426435,424529390,622351588,57710589,586435681,396794125,804107549,179105778,387054238,745742617,206382377,210794083,891094867,937621133,344668207,709706860,500456751,972562618,886670375,956471175,271917227,546080204,723642325,51615394,958612472,443359422,223696271,361058584,762774683,64079419,324092736,140390015,155685048,530275456,212134190,474059184,129383976,12241026,716397850,358893079,794788342,385743152,749060159,511774228,301380578,646659956,574743596,33658402,628051234,366441271,589505051,402190930,435679638,672998959,149966457,734229645,859003995,51357353,890362949,128240578,382661279,661761006,134736167,564438401,917829695,393945705,768717064,588842843,564752349,571275170,311471241,134779948,192228501,605534725,894663520,858249590,57061839,104972623,38004526,447102829,99872273,714434764,808613381,58937949,894942002,161641514,671156343,663600372,243877006,943613797,969950059,735159235,342040925,297222536,539280903,282859752,663822942,870700021,257187492,452146942,21550695,615015625,320804005,132745896,780514621,152902399,449790080,992642793,411968583,966364743,338843854,226205948,469961794,602084893,428297171,709253748,154875078,911454329,121737783,506761592,908148743,705269519,992641599,399377416,922485461,752461653,913909760,500667171,890836865,471945991,200697722,906217964,214465503,449278276,970377614,427394023,925172464,336872194,22159142,21012768,646792610,654442539,111415492,521877815,169998091,571244140,795010272,121372672,820885746,6699652,421298551,162946130,297606286,445970639,380855595,133703532,755240580,135803399,487731831,666404437,972850740,715551506,585838226,825721506,491943819,81734014,379964942,181364802,382090947,138238101,304128399,308161254,780352592,406278696,949645104,349936576,270876051,16805808,673075042,166442915,971831731,875744154,57446978,638877427,456130759,613710988,42619965,508362578,167981794,864784413,153183087,55356947,444562970,917741050,738677421,685160764,200650304,346901482,255768419,55502302,109664484,134969955,520323148,220549370,835627342,724137498,473001499,107405404,524732683,647924950,206669423,779725275,99268750,887729315,638798450,9631203,891767513,789137344,387628397,529418646,811924186,215744241,534889750,342946721,771567119,323186589,401678730,281776922,949909075,784341358,568247534,76668344,277338031,800491036,715072183,561554158,752599434,510286731,917797081,436913454,94991749,559703795,206887110,77992927,239713712,359538293,650290714,370752887,382824352,40285317,730325531,634009492,699386276,49002348,746114471,807908827,22070534,870694316,473543371,10067833,603671058,325536184,311007439,56505351,988246989,167772055,555538065,806211065,734588059,943453643,976546777,131754731,33237588,661704972,875877163,369618035,812950821,893144983,807713849,792031293,192350125,847944411,769330990,190692124,854364332,342763722,189986044,895220831,715007953,992305677,372162731,114122367,626501879,742918509,25458857,650836637,740917804,996303085,586860180,117890710,128796833,929259094,976286917,349046697,418662218,947762174,932581722,297888208,888320061,121791730,834497367,86835092,482347303,308061734,518340748,633694988,159767166,547199046,905796092,26164252,839475102,72296882,583678977,167545631,195567899,28341624,755714752,146628879,398762773,81436091,180662898,140026101,176158805,430633713,939289230,936265058,571711740,826610289,696035101,653774773,958004002,980298958,891139759,296465961,734141320,439023995,740769098,464751878,422906101,735430139,676548804,661543479,495448339,178998425,881845860,642532663,376646492,704396717,582718078,433756052,766147796,870859672,708439562,500627437,451940648,466679219,90043564,615978637,55038711,746030440,252130386,673983219,507772601,747416633,458266118,483134048,500951637,192306027,750617148,858884829,811251811,414928793,350177654,262183610,494805979,82062571,359037171,147357578,794410228,134432089,387337670,564621530,802847056,826966379,319169437,685688465,381389330,87237193,656529738,978966149,688018985,835879235,46345861,163360603,535390124,45506973,199279336,557669508,43025411,547341736,993602524,748744402,186283991,414727126,897035113,530685677,656951159,634402578,954782639,544097893,723206397,946417053,599443483,389262780,873970108,169874913,21355615,269370914,369452171,432410698,592754266,290701255,951735657,556138952,233182766,207771073,793649599,577752825,842197125,266735434,492780526,968156292,993468588,504613496,48293499,909788365,205571925,878490910,717248298,480179632,938042721,674575146,155236129,852360504,481679035,127619482,297250943,247242930,817489339,566772721,214153554,724514682,609304508,145878950,378057124,128192525,48631785,232304967,829283202,276767370,184277228,284417455,180240175,826679354,4786425,502243144,889924020,584868984,419792103,769356162,334197506,283700792,904004998,707299256,281559219,439682123,387011669,349270116,262870813,227571297,654666266,800444058,133054567,450716347,828984096,107902091,787634222,177139128,562289275,40653656,71896578,820981205,273380207,8439074,861515516,443915897,650708150,244305422,532267465,770878810,587753986,152022143,758471883,173142509,290897864,60586623,450929725,308668761,321110474,824665305,723612456,829687848,883698301,934247374,97994023,946829251,899639762,478937589,406462618,400071108,824606220,293654030,310121118,323111480,479494434,408087848,685352406,776482341,269304565,817748107,956019152,198124793,554501578,109478183,385772390,713239238,291668270,810837520,359770454,370825195,693478515,381990911,694760642,375380967,344756973,863899473,415073101,203518860,65203721,281101766,628630427,424748525,595523232,745588241,445871984,780345630,942796645,135544732,583153611,226048752,786254769,474924990,211809525,834936034,168554673,195614048,6812352,874451727,907968191,286479787,239522256,512008961,755761552,728328199,562699324,905080519,965055010,708721456,191466432,281586538,445951484,928489220,387412318,315518024,611966915,594497253,623629620,934777431,198760953,884379217,404720526,183413830,791627209,252185895,998715505,11811348,737783852,398093040,507584149,47867903,294691161,895361263,671974316,383658324,744989045,30928733,783083520,532176895,921347850,579589359,841309830,674395346,591198893,381383103,366118019,642487347,820737985,587041340,503553169,960758059,17121040,375254580,342009887,50400630,834006923,770986669,441405609,199153210,878264485,865148110,50061035,848510706,175995465,862892410,254525237,243960917,526610222,994804368,651119014,747099997,290151224,369393232,336580513,616908333,493193750,999448059,875259154,89955711,587617276,862361529,972047616,556852672,659343946,414783266,242108874,33441127,534341863,331604652,505538127,569707792,55830453,234104248,870720327,435937250,877362349,899129235,728471304,601573731,645260224,283285673,117276907,298373166,430856986,446807405,132684815,899924637,458417848,275822407,975515556,949033076,238995437,396776813,732916336,12843815,587059041,240514729,49061508,484685621,673273275,968315632,190577909,653535807,891601908,613025386,232607347,252965786,496125449,145374661,386010471,153577757,780667776,706749260,105623208,79188435,991198468,159777621,876667199,422289768,574010340,518010252,435399432,369954396,435140357,955975372,787089893,152859416,55089257,634445982,838168971,847177526,819503478,80951762,745218894,285157274,520348831,989684799,791197802,362715606,848174000,924709524,554864154,299401476,293437680,547555562,147316652,100853292,885367675,55605856,682533414,468868552,762245922,211540631,907293474,574602103,415794320,885183810,854906951,633401004,662465082,732854814,904685892,446731776,826286642,562658516,663741591,987349331,657168531,744979022,993414904,462755599,425211180,261974703,691032896,942730645,591608050,819826829,271009088,790167330,530364431,966878128,772714556,732612771,550455062,72250992,671819885,304622043,679167596,526490625,648063730,551068119,922125110,470830553,170741597,691344548,750703284,532636377,748549408,956900552,526429436,919179975,932790727,529108039,486666704,7432002,668565340,317405247,145069475,685927472,53155663,111505788,747148597,113787069,472765398,343726081,599423880,298863078,951306305,88570431,330635573,888383852,133317149,112637226,816154702,334267462,196982446,707995042,374114347,462141828,352592552,926686049,611097159,790293523,470210084,353481564,350511400,344015838,885716764,240172110,336595132,295654539,880113402,39677486,975684955,632897633,852335870,832683252,742179435,518030985,729115630,700621561,293262435,143426615,248484511,427130746,385531932,268349266,478155658,932699644,654249723,552424063,881863364,497827844,795656892,709911219,140792947,618473086,887851343,352163822,574266355,852022207,289968438,793188514,573799445,726146978,183074979,766370523,163523103,6226247,57095061,231137032,175797468,621209582,573947586,196627195,383971700,650219449,298352991,968229951,595176077,503075584,323490032,206416891,690971340,142820343,494974121,240144006,990132505,589845201,241595104,606941502,810426833,990223197,979942267,728788505,838280725,985915455,138442827,439881924,709280540,144966484,377609740,100310966,333200655,767532144,650606371,200973910,293643863,64702112,810722226,211615788,771352873,890124420,286888614,238545648,833864117,409261204,924413630,547416531,975883092,719293064,894942259,491407430,672420946,62510878,529728515,131977597,723041782,390235214,225897724,174758525,601364663,285393889,943766136,646780940,155134159,956847132,450135338,684340692,769318559,49418377,667461363,935638035,727287010,750871167,725437428,528317062,996097019,476578360,863859062,482997489,502826556,139324303,46056402,492360627,70768543,480682033,288360203,701107552,409137809,410450568,516872443,285906257,536389945,602543803,470348633,799180930,391209797,291468074,593360914,311473522,954048450,629031677,7882954,517915233,815087127,160711518,857728554,747942811,752288954,251887738,945254410,368182097,321617934,279205041,170967999,348388288,505944486,416662878,222096754,174796228,301733150,651840897,478707474,950845892,880398434,405472780,127484782,862140213,997122851,59593885,756921587,360464207,822029435,342757687,501942327,819810630,648176239,863162126,870818110,16501490,507408209,495525052,801526032,207039224,646691059,497889832,114808117,797258046,138462489,331061182,625906432,342473720,179356912,959168720,891252648,592109252,856735433,822014096,785834256,216338803,583802173,545704036,143035551,469120578,922990779,398320829,296687664,639506106,85734748,414485229,747541509,109575519,538262582,781060148,285172608,578835551,471253681,837296323,65420214,743171870,837661297,869640859,819987445,46626389,263173019,27957508,263608501,603816554,182452418,114136804,804320242,412528138,459784326,917278061,476869925,204036983,946110430,229703299,236825097,534544744,838616806,932225383,957257741,810581928,544506446,879360459,262506240,196560439,365733360,235986321,41703175,898066453,739642634,59229049,70487752,178366295,669115260,808307565,936387337,656531008,526073360,62717251,62149917,72102879,735347865,833292639,446300902,823321663,934014883,431878696,513517720,838728392,697049495,618500484,328642751,341497102,435832542,349028703,272110638,337684678,533870125,187955878,668100502,779020436,773991712,980046174,717896032,206922144,229190554,57744235,832136555,712444261,967336263,325055263,778246518,780993617,495875517,140420088,197299261,772044635,300913041,932980755,358398806,133322395,499146804,941567134,440146130,842813523,94860081,584395016,270192708,749949893,219008480,602846478,854750643,375982348,610386370,98078005,540549384,584817282,944044354,376268381,482539829,334617273,670768863,89636008,438161663,372515478,7530934,519669168,550151520,609000264,491531789,885177885,186984340,372101090,912201874,645163130,123764688,896298270,94659057,862059316,756275312,159508616,191847078,554127690,398778530,715203709,551095074,893438463,194660904,303033047,194864382,468804728,713519076,195766294,483796499,968508867,200493216,825802815,558342437,380981991,664593920,260366728,786824891,736021537,360469643,492815050,870257710,144241599,645199537,808844088,227715333,805298469,236968147,200788175,520557055,820569929,442737135,564339788,982503459,985987689,126294655,913553220,926502364,332271560,358010777,948907396,727230603,121560550,199357050,441603977,468970374,632817319,224712057,557367466,237658666,570153262,377076541,581036487,326303187,551768072,182844201,961293223,165587834,241439132,777043934,798356755,938024635,937636045,174384880,269376768,755162327,198501650,328666901,129144395,550176322,714725552,392377211,500205754,858016867,67428063,54250915,846087028,336787730,387358152,740144141,794375095,27355790,475733502,692959297,109566468,210427119,573257228,62495397,296008530,863829915,350025015,338274106,63675184,675821464,36048007,723616102,365423915,942680677,728230090,142248985,370559273,462658384,105253642,672247672,525312699,581863438,785281985,248843391,611643006,79971725,353460641,246128973,596260314,148149888,907198306,698494697,660067480,407141615,622912799,533140552,43386475,824102740,762294728,692629370,880648123,734633161,218346770,190374085,237394170,120506030,983323224,764016889,79718766,461624333,253635140,920028683,859912753,28718943,816807398,593041573,971220491,507919501,616611719,468138875,712708007,916502315,120853875,342686762,387667651,650786839,846686496,128636484,17482184,294782798,63946140,130534462,662411125,714998989,50435921,621854333,27107473,708869505,296486408,674369051,842617439,585975060,133286961,939860873,747134179,814478789,773075372,744400935,988252841,208302825,877521635,518002862,809125726,376484911,40769269,490416412,167526838,714122324,983358215,567438347,952605959,85955019,801924481,988542097,674588851,771815501,442779239,39597090,416371223,209207620,267843166,6761094,572274350,294060841,381880751,897364316,222971247,578090425,902427031,508211559,136089959,468234345,31459621,296076120,61096079,733240342,45022025,687114845,766107888,18447404,190943807,209287995,684486348,935399177,817178863,117232231,255637504,617907346,352449250,742221289,760118983,518582519,161942033,107643946,550195717,922642538,797973602,634975836,59862476,212484081,872406873,639568201,736880313,816331121,770287990,390741225,707649779,432356858,112152867,182386811,514121203,851174798,231568620,148216355,444935869,244816684,914094448,977561337,548113254,647061104,552348812,612529744,568157595,935466659,318652066,79594756,686776637,629735088,961911141,863099158,273517015,201561771,709199915,41529219,237124114,765854714,426085764,457232173,163866045,644551636,424404482,271166671,685845931,50569537,304338271,550731216,481886830,699278133,256902825,625032579,595674204,85268262,904635510,688943872,146299503,351237773,735977395,472066093,681619968,641874714,992389388,779229072,920464722,548930763,328707478,392122319,441762570,71353930,128620625,46211647,310387502,99031038,996822602,880475038,320464650,810770419,839053881,650593276,315436686,106755877,408402064,969275674,905320103,107987140,958943346,412625987,831183603,375735662,591565002,188938418,175369426,109903928,766874748,658810122,337071609,642004238,575295712,965106917,332517298,37488270,120742790,104026016,303084644,535193332,686199882,725276681,546985062,926166359,642902266,247440847,817829409,942087531,586032765,279844084,789257023,391048421,684037069,742141881,651322849,299614492,495286281,649749730,686804497,763734456,678766715,577507452,636023728,240345907,234803847,689559177,600654808,357128782,792988844,42958985,682988212,347843451,417789323,668702414,206829478,643923268,954877825,613702826,377677035,67501579,92189580,729676018,663246527,783770145,492392999,703257,10120702,397213842,887250817,332983370,154000182,494114893,81124205,4371189,6619031,328393889,708991806,283956173,827357524,580363013,496561447,713193410,13450567,415799308,574681760,778825071,693843675,927836305,824589872,312111579,713800761,11831478,221824961,407320806,614928747,482343396,399410825,127603766,38828360,45534793,767338024,777287966,10930268,948716134,816933593,68189070,965611249,263138844,792369821,636321149,169367373,312713547,8470478,806315698,522558703,766076243,28862282,922837742,383421303,470788217,310626956,383731304,245252151,842704265,968233268,928972808,233036588,42877186,151810940,457596835,288750027,468889365,350032828,486910945,133996440,310874469,439098650,197733653,631662998,430277022,73688414,237685029,721127439,107444492,919114270,305761979,857749829,793458467,378949640,109046751,115097241,227806290,926770121,328300424,123868067,899158450,885254844,841735971,609257638,358642388,314043383,157352341,6174492,751130533,755246703,678752904,613626329,458551614,420571184,620298714,144076160,275762085,135836460,42721747,812789947,967961938,292391148,887679679,618003738,430283846,889401365,2122955,904358986,770127457,395239829,865028204,127645785,857421600,62312891,808209365,697314323,949661587,746194990,99854918,876968408,549153682,691426066,846082884,698949151,878945451,632191154,907643796,159285714,271176058,540931581,511180978,559882979,432957438,225129186,252981125,910119903,8570877,203068678,104070385,231335701,40824431,619960793,314895525,669299083,361466298,180899234,203123786,839196357,726989877,544714104,596430996,400119793,318704766,919068549,46259508,20265609,294043095,94170023,12702651,560798961,503056975,624786978,776336973,787695467,209692804,398896342,988444449,600448188,148491130,373024773,60037531,116257638,399615561,816031661,137801836,298569988,424777929,337582886,844720940,740794662,372972287,708172759,449192979,429418621,375076657,283687503,370408974,230699125,71382435,30284441,403213055,410485855,479501317,412824876,583142929,133931126,282882526,925013222,68427927,540044074,813336286,70471026,139590570,11119482,28574749,261790513,326068117,536210203,908572060,790231703,513174362,580130358,494750077,807620574,5169515,107729858,314293188,732852845,318600797,300372822,211439262,229294910,693791343,774591524,84634792,36621676,847040194,453868896,998623539,445940445,522830475,747335521,742591934,782621207,907797056,193647722,775316111,359876256,327953378,603891256,563250006,701923644,998078882,609903832,991337008,839015871,855792408,367897688,226514833,582002675,746958250,483314042,480379622,469418525,69148884,101935846,219545470,217721484,519835843,937481098,156141424,228544629,237676983,716919004,716205355,119334818,755915302,75457896,22064913,268068043,107323931,166390770,550885762,225679002,569138349,675754830,507507044,449624459,188172523,913130108,967991332,160900513,396753388,56099951,352694610,862415185,331632345,358935728,517078985,293829781,727278696,411103492,978187866,455377597,701998027,884812874,28758332,154384761,27626247,933760879,83474552,639167958,103377315,52291495,879368577,405006780,169573218,246487836,910916809,98875670,180312377,904601976,823280215,66434936,928636590,615130102,866137361,559929464,691115109,945451313,827241484,474190984,408393039,797518830,472476406,132252661,888107460,698738375,829699246,226054163,532730426,702763196,886675863,121824855,523808227,158116340,717216256,222708629,860283927,746213685,684521464,519280711,947656472,702184985,157460668,710768595,341558132,24853930,114883856,449831970,866075080,86606936,93074076,974487390,870763516,256656299,156500999,224435842,331574339,359195614,968342310,150504338,852004865,486352706,652657799,441471561,678616086,887162939,318829201,213219709,203085273,487792164,539005083,869351343,768006842,514253400,926006322,125733984,607898933,809286879,623363445,67378434,785318769,526339063,503749464,108979348,935400734,98822907,564693708,880144930,745354304,379932854,578199299,13836225,627606686,867132265,587125221,708936425,589803307,462235739,372548051,89929609,313556584,960243834,30518657,231184495,435020561,208079278,428489608,220276545,892237242,999491128,129830753,580314187,479421073,367833889,738791720,149464142,740528118,143014389,141863583,26183311,663018101,578726673,272810151,430775587,407029265,299984488,844369897,548564272,32742538,504134698,424209121,538776726,704282381,740985855,842399557,86525793,681703639,732387821,339285246,359637288,336651094,883072450,683981676,301159787,819797056,422043745,485166848,848519465,867062337,787289724,112038356,814281505,133665985,737088813,356839574,57140393,851497338,520858259,915310530,683095010,872598287,446326211,674593777,814032673,292156905,253184074,234248199,351057660,359272619,41143913,187989627,642064002,684579914,385348658,861201042,935125217,367775789,108718158,260088233,912410060,826959805,384326521,441960473,958288884,44139026,380306023,932136113,759627207,104575070,773197978,570348876,852903881,1546298,778173606,522640987,160024512,239232218,977765206,295091107,665065402,695224826,414919048,393938235,198219012,272187310,846007377,752757545,528484882,311914210,865306530,800228024,962295026,940242654,337126974,778434777,422010859,171175435,241774412,624390087,408242781,418194685,395498326,240179270,876231422,81233440,904231761,306677848,467338565,861766029,259338878,469059338,687008934,153533729,901436607,409341541,229172494,448372565,558817609,962810098,339264512,77325580,258830324,777042322,210542657,369373794,372726403,665233191,538523559,535179623,2774118,449654344,267544252,543801225,8703948,546557011,910658685,125729298,966196129,182353570,316215843,702870521,782130314,28106808,387476187,19264804,183622069,332133166,712719379,176436072,822758856,983105502,106706765,688178717,495759856,595367850,462257543,434066330,997667175,179164719,397348798,950335250,590535381,431673877,583895431,986979618,470513975,637344826,694949199,132487274,358762619,963372378,110667610,388191321,365194261,974831682,87797678,484385764,557161039,308767719,778288745,796684261,671382079,792645380,434173272,958399448,764421514,491383804,497674541,131935204,919826452,602390192,144322548,730673060,75733672,283416387,579611161,149704934,625683532,976251345,239298507,956316068,785223462,335313353,877309951,410649965,578962045,764596981,220696830,459950797,639637095,255013013,181789903,558873395,755508536,878728589,157855385,500667221,324895352,771696698,199114324,342271070,933539804,883334779,384605188,434417099,769997025,901506422,390341616,263129128,431258563,65318462,315723079,867042940,147871621,169972561,411334352,448614528,519469551,144297285,882255372,126923759,761271732,448819650,504118332,516631018,726772978,413298515,267613535,288266313,303383507,662183622,38920425,854386573,842470184,678341254,643724431,75770712,776775841,81964355,524945933,973635831,863660563,849311404,382025657,554586308,203473801,407522138,300715163,985257722,898304151,815390544,669229378,559801375,776541561,515959651,260724349,482514690,358460229,936074739,697494187,477336432,331045700,830417694,460790157,162445075,874643760,954148617,433282347,58498054,991810343,726274015,987003536,303680905,982231153,45937479,569047935,142517029,634045324,887639112,196465196,605466087,460867467,106314996,461999717,245821875,343294324,722439330,786882514,315712644,494769409,105541656,374228597,836406729,983192930,460306632,552558390,936933217,865700948,808424097,598176520,443545477,843509243,613724376,497354362,447058939,213940812,276437834,595727209,567611107,8912278,659326299,594283264,654599804,840798995,209132893,667891768,775317120,556235241,304189554,37884286,910507134,21442149,667356771,258888121,749796369,732453152,325679797,324059120,195225996,992203394,653580568,957779736,689146886,187030973,140328419,41616742,975689,882498148,886427170,610001562,159265364,336437076,625260392,437611131,432242266,139496436,995796841,106575295,735153947,339138456,802189434,730875812,821213906,435922083,39952303,381253231,583399160,324235794,256149945,453655754,594797597,440143846,965150894,399993703,967376395,364933064,806599737,514341191,654699351,833338221,725942984,328789967,879308171,375875939,903778865,99953491,733746304,896863556,464446201,983433005,1692879,306191535,282380254,159865874,479767498,906014882,307386997,483876432,278567771,304285468,967696201,632649368,646300121,609574379,238008395,435250467,192820601,662158344,498734361,127586378,558258881,286685543,818277172,232547522,352937228,590989492,393795842,429402687,551696738,2342249,689871841,97677038,220492955,970390156,5423053,385176082,844962135,250771000,623900470,632708982,181298019,886246542,797402748,11022272,960698644,942824101,416637473,311243856,91478627,903808344,558325379,350440590,889199718,146182075,508306384,161734947,640432785,417773231,912588505,930625738,293156094,506623484,802055848,223900958,637914403,798724706,874015748,506569980,879657657,937900385,162116344,805702735,502673106,712453319,129604909,213889604,698819421,825565446,935176923,823084781,445337197,202675358,738237011,634967657,928657443,12224379,698781720,928737013,737183336,407347078,386000691,385440338,593613461,505887694,163669816,131508823,85161448,828355267,308196530,326738082,378257158,5600577,359920298,212131782,443768137,854350486,406968869,171897824,844132492,277662044,845754259,901018647,742397698,424071938,443542215,834237240,727647737,88378569,115175711,881991611,694349962,855647701,610490085,155503193,590874319,633516339,655173890,158592228,971676792,413409884,965609275,571291271,871174709,455351693,428547961,22043905,611028380,794142736,194521346,379640967,454172657,439965265,93911664,884684142,182095364,241400872,974383936,51510290,228874120,704535016,604949776,568809039,212780817,169887115,483528756,947326834,256331090,682330580,951043872,902878385,195527071,360309480,551913006,107733310,128571548,200649310,649401862,910852687,362972368,549827099,668627329,817315215,689325131,361300104,262678625,81257054,294112631,127410907,116593777,76683586,911663828,893775416,101931422,953775469,114514980,17574766,153936539,810247288,903419887,634402349,128629625,30774137,132580147,192545491,843179124,984635886,841680602,361566509,643040197,11905127,929501067,289689812,961229195,823679693,379261634,726622127,793007199,462370530,687766196,323933674,799489585,586143061,111369831,282662984,415101427,714947775,975685957,222404338,794707986,894527776,929043020,523674624,121058011,417845809,649800322,249461872,68171388,962772080,693469059,120585402,673755973,813866819,136193187,466172754,808551868,515021103,85296125,73460793,903218270,765561079,751083761,405926076,148319066,167606643,480087787,363451294,710587648,633149269,677922171,277438607,427574684,408432888,284979953,488726380,987471714,891193570,586491434,306136984,694469624,472747107,871791839,982131226,379146802,448050294,526766267,978296793,960638522,170009867,482042401,169884490,468890584,184451211,631638462,39351411,552844873,252727731,825159340,305585014,765013974,591528299,897172676,909423673,945397164,841796443,563917459,474306948,690612138,747759914,85321499,167310471,424904694,954320869,516509895,714775824,359388588,658763752,331995604,35650987,628671666,714641082,698121769,756664328,915287014,24091081,606841816,60548123,31480707,144463697,389393247,117789735,772768461,309920912,773507413,993873289,990884770,502845062,502025985,333379741,571383740,680859937,868825046,324890935,813263919,737139079,784010140,73038996,717496070,717806825,336101058,761514327,963204925,311087975,218658138,1319935,900955380,16733687,536527990,958019783,633825387,698123827,272455890,484494961,552617085,140957577,668999255,609696356,645957648,784728146,516007345,781766438,253544529,945767020,652235911,548478851,820828067,440767488,453006555,403639235,881812450,413006512,103235400,76486363,684174990,508839674,486749560,180150895,86740341,818523788,851069905,826131106,173442268,121627183,350390613,765944103,965622473,822923395,105793031,522937998,913357187,190399325,268419606,111076536,577398547,710970857,655475051,563536939,550744226,591691656,618307902,731658387,172027744,690771909,811165481,446795086,965152790,754535813,840189709,782478803,238366943,222507384,959706524,929631305,472581298,700468865,131713866,181506859,551173736,865223926,813539560,991596574,275406591,663686523,89044991,899753992,396552986,650324937,844919549,930893148,572409576,556575059,257326041,374827672,65152813,532845084,300879468,425585059,222464424,552999199,365811845,491918928,981952924,321811713,209009085,811398131,178356146,220839696,289685927,937387125,843357297,83904,286329306,224095669,221705782,32810371,366427206,90660674,79765038,322807176,379697341,767330285,866232570,570339190,110833502,34627126,439530074,382257278,6429572,277084913,461172162,743025294,122346014,524628,317170029,608974283,129437077,76962546,782741013,528118851,918924135,373840955,738594034,72921793,204801387,732326677,794107442,745966521,460320845,176929143,71276301,681149980,663349019,760858136,609556955,833043510,506286105,841232622,73391565,465016594,800780414,888563906,505858559,185319574,533372657,754619582,596150628,335501167,507625558,645510778,145571012,421778517,938228819,671059220,867212110,344864967,816190049,690009931,257892979,562539857,123329649,508862331,537744164,112804425,840356513,111316543,61778055,901119956,760829249,885862315,268032349,658649848,466077768,883842879,450645280,392661944,808066346,577918771,614926711,986345193,793228860,96881902,999747536,290361306,245135207,557282357,903744792,720916335,785013267,163500147,154941960,798061126,207804998,185518533,347090981,203594355,255833480,736110745,633986771,647783183,850847721,75400313,828188108,607755850,973267110,205247944,968277083,246373920,303073920,256754198,493876655,135758163,711763334,110593079,164842399,288116080,608380610,431502996,187689696,707973556,57319320,840807229,262009993,739250278,581359444,656853503,475629429,88498171,405827034,850130482,671477666,557262016,949402058,366666669};
inline int Pow(int a,int b){
    int s=1;
    for(;b;b>>=1,a=1ll*a*a%mod) if(b&1) s=1ll*s*a%mod;
    return s;
}
int solve(int n){
	int ret=f[n/len],i=n/len*len; n%=len;
	for(int j=1;j<=n+2;j++) fac[j]=1ll*fac[j-1]*(i+j)%mod;
	inv[n+2]=Pow(fac[n+2],mod-2);
	for(int j=n+1;j>=1;j--) inv[j]=1ll*inv[j+1]*(i+j+1)%mod;
	for(int j=1;j<=n;j++) ret=(ret+2ll*(i+j)*inv[j+2]%mod*fac[j])%mod;
	return ret;
}
int main()
{
	scanf("%d",&T);
	while(T--){
		scanf("%d%d",&n,&m);//bi=bi-1+2*(i-1)/(i*(i+1))
		printf("%d\n",(solve(n-1)-solve(m)+mod+1ll*m*Pow(m+2,mod-2)%mod)*(n+1)%mod);
	}
}

1004 Rikka with Geometric Sequence

求1,2,3,…n这个序列中满足 a i 2 = a i − 1 ∗ a i + 1 ( 1 &lt; i &lt; k ) a_i^2=a_{i-1}*a_{i+1}(1&lt;i&lt;k) ai2=ai1ai+1(1<i<k)的子序列的数量。
n ≤ 5 ∗ 1 0 17 n\le 5*10^{17} n51017

a i a i − 1 = a i + 1 a i \frac {a_i}{a_{i-1}}=\frac {a_{i+1}}{a_i} ai1ai=aiai+1可以看出这是个等比数列。但是注意公比不一定是整数。
官方题解:
shegongbi
这里用x表示等比数列的最后一项而不是第一项,是因为当最后一项确定后,第一项就是 x ∗ b k − 1 a k − 1 x*\frac {b^{k-1}}{a^{k-1}} xak1bk1,只需要得到一个与a互质的b就一定有解。而用y表示第一项,就需要考虑 y ∗ a k − 1 b k − 1 y*\frac {a^{k-1}}{b^{k-1}} ybk1ak1是否小于等于n,而且也并不好求互质的a。

对于 n a 2 \frac n{a^2} a2n的整除分块优化,令 k = ⌊ n a 2 ⌋ k=\lfloor\frac n{a^2}\rfloor k=a2n n k − 1 &lt; i 2 ≤ n k \frac n{k-1}&lt;i^2\le \frac nk k1n<i2kn对应的 i ∈ [ ⌊ n k − 1 ⌋ , ⌊ n k ⌋ ] i\in[\lfloor\sqrt\frac n{k-1}\rfloor,\lfloor\sqrt\frac nk\rfloor] i[k1n ,kn ]

后面的部分很妙但是也很自然,好题。

Code:

#include<bits/stdc++.h>
#define maxn 50000005
#define LL long long
using namespace std;
const int mod = 998244353;
const int N = maxn-5;
LL n;
int T,nn,ans,phi[maxn],sum[maxn],p[maxn];
bool v[maxn];
map<LL,int>F;
void Prime(){
	phi[1]=1; int m=0;
	for(int i=2;i<=N;i++){
		if(!v[i]) p[++m]=i,phi[i]=i-1;
		for(int j=1,k;j<=m&&(k=i*p[j])<=N;j++){
			v[k]=1;
			if(i%p[j]==0) {phi[k]=phi[i]*p[j];break;}
			phi[k]=phi[i]*(p[j]-1);
		}
	}
	for(int i=1;i<=N;i++) sum[i]=(sum[i-1]+phi[i])%mod;
}
int Phi(LL n){
	if(n<=N) return sum[n];
	if(F.count(n)) return F[n];
	int nn=n%mod,ret=1ll*nn*(nn+1)/2%mod;
	for(LL i=2,j;i<=n;i=j+1){
		j=n/(n/i);
		ret=(ret-(j-i+1)%mod*Phi(n/i))%mod;
	}
	return F[n]=ret;
}
int main()
{
	Prime();
	scanf("%d",&T);
	while(T--){
		scanf("%lld",&n),nn=n%mod;
		ans = (nn + 1ll*nn*(nn-1)/2)%mod;
		for(LL a=2,A;;a++){
			if((A=a*a)>n/a) break;
			while(A<=n/a) A*=a,ans=(ans+1ll*phi[a]*(n/A%mod))%mod;
		}
		for(LL a=2,b,tmp;a*a<=n;a=b+1){
			b=(LL)sqrt(n/(tmp=n/(a*a))),tmp%=mod;
			ans=(ans+(Phi(b)-Phi(a-1))*tmp)%mod;
		}
		printf("%d\n",(ans+mod)%mod);
	}
}

1008 Rikka with Stable Marriage

n个男生,每个人值为 a i a_i ai,n个女生,每个人值为 b i b_i bi,两个人的喜欢度为 a i ⊕ b j a_i\oplus b_j aibj(异或)。
求一个稳定婚姻匹配,使得 ∑ a i ⊕ b p i \sum a_i\oplus b_{p_i} aibpi最大。稳定指的是两个不同配对的人不会私奔
n ≤ 100000 n\le100000 n100000

异或值最大,容易想到trie树。
考虑把男生和女生分别放到一棵trie树里面,然后考虑最高位:首先肯定是让不同子树的男生女生进行
匹配,如果左子树里有一对,右子树里有一对,那么交换他们的伴侣肯定一个更好的选择。
但是左右子树可能不均匀,如果配对的其中一棵子树的大小小于另外一棵(同一个人面对多个选择,例如两个选择 i i i j j j)时,应选择当前最优的配对(设为 i i i)。因为如果选了当前劣的配对( j j j),有可能把 i i i剩给与ta上一位相同的子树得到的异或总值会更大(例如男生111,010和女生100,111,二号男生的最优策略是一号女生,但是他选二号女生总值会更大),但是这样是不稳定的,因为 i i i更喜欢自己,而自己也更喜欢 i i i
所以策略就是左右匹配,剩下的内部匹配,每次的匹配规则是相同的,都是取最优。

因为每递归 O ( log ⁡ a i ) O(\log a_i) O(logai)层一定会有一对新人产生,所以总的时间复杂度是 O ( n log ⁡ a i ) O(n\log a_i) O(nlogai)的。

如果这个题不要求稳定匹配,而要求异或出的值排序后字典序最小,可以用同样的方法贪心,因为要保证最小的尽量小。

Code:

#include<bits/stdc++.h>
#define maxn 100005*30
#define LL long long
using namespace std;
int T,n,tot[2];
LL ans;
struct Trie{
	int ch[2],siz,val;
	Trie(){ch[0]=ch[1]=siz=val=0;}
}t[2][maxn];
void insert(int o,int x){
	int u=1,v;t[o][u].siz++;
	for(int i=30;i>=0;i--){
		if(!t[o][u].ch[v=x>>i&1]) t[o][t[o][u].ch[v]=++tot[o]].val=t[o][u].val|(v?1<<i:0);
		t[o][u=t[o][u].ch[v]].siz++;
	}
}
inline void upd(int o,int x){t[o][x].siz=t[o][t[o][x].ch[0]].siz+t[o][t[o][x].ch[1]].siz;}
void match(int u,int v){
	ans+=t[0][u].val^t[1][v].val;
	t[0][u].siz--,t[1][v].siz--;
}
void solve(int u,int v,int dep){
	if(!t[0][u].siz||!t[1][v].siz) return;
	if(!dep) {match(u,v);return;}
	for(int i=0;i<2;i++) solve(t[0][u].ch[i],t[1][v].ch[!i],dep-1);
	for(int i=0;i<2;i++) solve(t[0][u].ch[i],t[1][v].ch[i],dep-1);
	upd(0,u),upd(1,v);
}
int main()
{
	scanf("%d",&T);
	while(T--){
		scanf("%d",&n),ans=0;
		for(int i=0;i<2;i++) for(int j=1;j<=tot[i];j++) t[i][j]=Trie();
		tot[0]=tot[1]=1;
		for(int i=1,x;i<=n;i++) scanf("%d",&x),insert(0,x);
		for(int i=1,x;i<=n;i++) scanf("%d",&x),insert(1,x);
		solve(1,1,31);
		printf("%lld\n",ans);
	}
}

1011 Rikka with Segment Tree

按照线段树的分治过程,区间 [ l , r ] [l,r] [l,r]会被分成 [ l , ⌊ l + r 2 ⌋ ] , [ ⌊ l + r 2 ⌋ + 1 , r ] \left[l, \left \lfloor \frac{l+r}{2} \right\rfloor\right], \left[ \left \lfloor \frac{l+r}{2} \right \rfloor + 1, r \right] [l,2l+r],[2l+r+1,r]直到 l = r l=r l=r
f ( i , n ) f(i,n) f(i,n)表示 [ i , i ] [i,i] [i,i]在线段树 [ 1 , n ] [1,n] [1,n]中的深度(根 [ 1 , n ] [1,n] [1,n]的深度为1)。
给出 1 ≤ L ≤ R ≤ 1 0 18 1\le L\le R\le10^{18} 1LR1018,求 ∑ n = L R ∑ i = 1 n f ( i , n ) ∗ i m o d &ThinSpace;&ThinSpace; 998244353 \sum_{n=L}^R\sum_{i=1}^nf(i,n)*i \mod 998244353 n=LRi=1nf(i,n)imod998244353

毒瘤神奇的递归题。

把N棵线段树列出来:
在这里插入图片描述
g ( n ) = ∑ i = 1 n d e p [ i , i ] ∗ i ∈ [ 1 , n ] g(n)=\sum_{i=1}^ndep[i,i]*i\in[1,n] g(n)=i=1ndep[i,i]i[1,n] G ( N ) = ∑ n = 1 N g ( n ) G(N)=\sum_{n=1}^Ng(n) G(N)=n=1Ng(n)
将左子树按照奇偶分组,会发现它们的长度是 1 , 1 , 2 , 2 , 3 , 3... 1,1,2,2,3,3... 1,1,2,2,3,3...,右子树也有此性质,所以可以考虑按奇偶分组之后递归求 G G G
那么我们就只需要再考虑 合并左右子树时右边叶子增加的编号*深度,和整体的深度加1。

后者我们可以直接计算,结果为 ∑ n = 2 N n ∗ ( n + 1 ) 2 = N ( N + 1 ) ( N + 2 ) 2 − 1 \sum_{n=2}^N\frac {n*(n+1)}2=\frac {N(N+1)(N+2)}2-1 n=2N2n(n+1)=2N(N+1)(N+2)1

前者需要两个东西,一个是 F ( N ) = ∑ n = 1 N [ 1 , n ] 的 叶 子 的 深 度 和 F(N)=\sum_{n=1}^N[1,n]的叶子的深度和 F(N)=n=1N[1,n],另一个是 H ( N ) = ∑ n = 1 N [ 1 , n ] 的 叶 子 的 深 度 和 ∗ n H(N)=\sum_{n=1}^N[1,n]的叶子的深度和*n H(N)=n=1N[1,n]n
右边增加的编号就是右边的区间长度(分奇偶看是否+1),用 H H H F F F加一下就可以计算了。

计算 H H H F F F时同样是考虑左右子树合并和整体深度加1, F F F只需要递归值加上 N ( N + 1 ) 2 \frac {N(N+1)}2 2N(N+1),而 H H H除了加上 2 2 + 3 2 . . . 2^2+3^2... 22+32...,还需要考虑右子树的叶子编号由 i i i变为 2 i 2i 2i 2 i − 1 2i-1 2i1,用递归值乘上2再减去一个F即可。

整个过程只会用到 ⌊ N 2 ⌋ \lfloor\frac N2\rfloor 2N ⌈ N 2 ⌉ \lceil\frac N2\rceil 2N N 2 − 1 \frac N2-1 2N1,每一层最多有两种长度不同的区间,用map记忆化,总的复杂度是 O ( l o g 2 ) O(log^2) O(log2)的。

思路来源于这篇博客,其中有较为具体的计算式推导。

Code:

#include<bits/stdc++.h>
#define LL long long
using namespace std;
const int mod = 998244353, inv6 = 166374059;
int T;
LL L,R;//F: \sum\sum dep H: \sum n*\sum dep G: \sum \sum dep*id
map<LL,int>F,G,H;
void solve(LL n){
	if(G.count(n)) return;
	if(n<=1) {F[n]=G[n]=H[n]=n;return;}
	if(n&1){
		LL l=n>>1,r=(n+1)>>1,o=n%mod;
		solve(l),solve(r);
		F[n]=(3ll*F[l]+F[r]+1ll*o*(o+1)/2-1)%mod;
		H[n]=(6ll*H[l]+2ll*H[r]+F[l]-F[r]+o*(o+1)%mod*(2*o+1)%mod*inv6-1)%mod;
		G[n]=(3ll*G[l]+G[r]+2ll*H[l]+F[l]+o*(o+1)%mod*(o+2)%mod*inv6-1)%mod;
	}
	else{
		LL l=n>>1,r=(n>>1)-1,o=n%mod;
		solve(l),solve(r);
		F[n]=(3ll*F[l]+F[r]+1ll*o*(o+1)/2-1)%mod;
		H[n]=(6ll*H[l]+2ll*H[r]-F[l]+F[r]+o*(o+1)%mod*(2*o+1)%mod*inv6-1)%mod;
		G[n]=(3ll*G[l]+G[r]+H[l]+H[r]+F[r]+o*(o+1)%mod*(o+2)%mod*inv6-1)%mod;
	}
}
int main()
{
	scanf("%d",&T);
	while(T--){
		scanf("%lld%lld",&L,&R),solve(R),solve(L-1);
		printf("%d\n",((G[R]-G[L-1])%mod+mod)%mod);
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值