分块打表

X mod f(x) HDU - 4389

思路:分块打表,区间范围是1e9,如果按照1e5一块的表的话,需要开一个1e4的数组,块间累加的是1e4,块内暴力需要1e5。但是就是需要打1e4的表,代码比较长。总之,按1e5或者1e6一块,都行,按1e6一块提交刚好飘过2s内,按1e5一块只需要200ms

#include <iostream>
#include <algorithm>
#include <cstdio>
using namespace std;
int step=1000000;

int block[1005]={95428,91133,87403,83959,80872,78193,75678,73361,71069,68999,91133,87229,83794,80647,77871,75372,73053,70979,68817,66865,87316,83715,80613,77667,75054,72815,70669,68679,66664,64937,83854,80541,77613,74904,72496,70351,68337,66550,64627,62903,80801,77692,74992,72392,70098,68035,66153,64475,62676,61051,78115,75169,72596,70145,67951,65961,64179,62610,60876,59365,75578,72881,70462,68064,65974,64130,62390,60858,59297,57844,73360,70757,68420,66223,64259,62381,60730,59331,57833,56422,71063,68679,66522,64368,62583,60861,59255,57837,56428,55186,68994,66763,64744,62736,61035,59436,57882,56515,55192,54028,91149,87382,83943,80971,78121,75542,73287,71083,68920,66940,87201,83826,80643,77873,75336,72979,70823,68850,66896,64985,83750,80545,77592,75078,72734,70527,68563,66703,64895,63120,80543,77606,74810,72434,70251,68183,66362,64659,62904,61293,77785,74976,72365,70067,67986,66044,64339,62693,61078,59591,75282,72684,70074,67901,65972,64123,62418,60890,59434,57991,72964,70459,68075,65946,64072,62303,60758,59247,57802,56526,70858,68517,66202,64215,62460,60727,59228,57815,56446,55208,68777,66565,64413,62522,60852,59257,57819,56441,55159,54011,66818,64777,62693,60962,59435,57860,56539,55257,54020,52889,87424,83970,80928,78206,75593,73237,70998,68983,66926,65072,83794,80602,77882,75381,72946,70811,68760,66875,65006,63292,80593,77603,75035,72746,70517,68517,66624,64908,63132,61571,77603,74810,72413,70201,68125,66304,64506,62941,61321,59835,75083,72351,70033,68016,66003,64187,62549,61092,59561,58186,72718,70174,67969,65938,64090,62382,60761,59396,58039,56747,70605,68125,66007,64130,62326,60720,59191,57829,56531,55366,68624,66305,64258,62440,60789,59255,57746,56482,55261,54089,66675,64422,62511,60847,59248,57823,56460,55157,54015,52981,64839,62796,60971,59324,57879,56560,55229,54021,52911,51962,83939,80968,78242,75664,73285,71005,68927,66965,65102,63255,80628,77867,75381,73029,70816,68733,66827,65007,63304,61601,77650,75084,72718,70537,68535,66581,64813,63194,61607,59976,74875,72436,70238,68164,66239,64478,62874,61296,59840,58432,72453,70138,68025,65988,64225,62512,60982,59591,58193,56886,70257,68015,66006,64117,62381,60795,59309,57966,56705,55466,68280,66114,64189,62393,60751,59158,57830,56551,55300,54133,66394,64366,62598,60835,59268,57819,56512,55294,54121,53021,64617,62609,60869,59298,57862,56414,55171,54122,53018,51888,62905,61038,59394,57869,56533,55201,54029,52960,51975,50890,80876,78206,75674,73356,71048,69000,66963,65128,63304,61563,77798,75319,72987,70897,68720,66813,65057,63376,61580,59991,74983,72684,70518,68529,66555,64799,63111,61630,60054,58551,72388,70177,68089,66282,64431,62766,61247,59903,58413,57063,70089,67990,66000,64262,62511,60930,59492,58282,56924,55620,67994,65966,64097,62420,60759,59297,57938,56715,55497,54366,66104,64169,62305,60692,59232,57804,56470,55375,54213,53126,64405,62518,60787,59265,57774,56466,55251,54206,53096,52038,62649,60900,59233,57783,56434,55168,54053,53038,52004,51021,61064,59428,57884,56420,55169,54017,52931,51965,50938,50040,78186,75619,73366,71160,69014,67021,65168,63271,61531,59789,75321,72997,70859,68820,66872,65023,63290,61655,60026,58338,72709,70465,68512,66620,64791,63120,61564,60056,58576,57008,70189,68095,66219,64456,62743,61200,59790,58399,57035,55662,67976,66002,64255,62514,60935,59514,58169,56884,55665,54366,66020,64058,62386,60813,59308,57910,56692,55549,54343,53141,64176,62331,60753,59207,57774,56503,55346,54240,53180,51965,62541,60771,59243,57798,56432,55206,54179,53141,52126,50984,60931,59270,57780,56365,55163,53980,52934,52043,51084,49969,59469,57851,56429,55151,53949,52883,51902,50962,50083,49003,75669,73314,71132,69192,67076,65179,63329,61611,59742,58177,72953,70827,68786,66968,65058,63309,61595,60074,58364,56852,70510,68497,66611,64918,63163,61541,59987,58579,57046,55678,68143,66239,64427,62826,61266,59773,58314,57103,55681,54429,66050,64235,62523,61002,59508,58191,56836,55658,54369,53252,64117,62412,60770,59300,57955,56708,55461,54358,53168,52081,62393,60772,59200,57773,56509,55376,54196,53166,52062,51026,60834,59269,57782,56448,55209,54150,53094,52157,50962,50000,59244,57795,56424,55117,53907,52989,51981,51000,49996,48999,57858,56492,55122,53906,52858,51853,50908,49995,48973,48028,73376,71193,69151,67235,65327,63422,61643,59811,58238,56819,70852,68857,66977,65169,63436,61696,60049,58385,56926,55608,68548,66619,64904,63257,61635,60017,58542,57042,55637,54449,66238,64482,62866,61329,59839,58406,57042,55637,54417,53270,64287,62603,61076,59613,58266,56915,55697,54407,53220,52189,62438,60794,59371,58046,56756,55501,54373,53258,52129,51035,60785,59206,57844,56601,55389,54209,53201,52069,51004,50024,59287,57838,56487,55293,54217,53105,52079,51063,50098,49001,57844,56410,55172,54039,53049,51968,51020,50007,49061,48097,56523,55167,53948,52865,51930,50920,49979,49005,48062,47119,71088,69030,67073,65320,63418,61576,59762,58228,56791,55387,68754,66855,65084,63450,61653,60018,58321,56877,55571,54307,66542,64838,63163,61663,60043,58509,56936,55628,54464,53235,64424,62790,61214,59836,58405,56993,55536,54338,53229,52134,62566,61019,59582,58263,56890,55668,54353,53228,52143,51069,60812,59387,58011,56769,55513,54396,53177,52069,51101,50038,59254,57842,56558,55409,54253,53173,52064,51050,49999,48992,57793,56463,55285,54190,53098,52090,51019,50039,49022,48051,56396,55137,54072,53041,51979,51042,49997,49020,48059,47057,55195,53979,52866,51890,50943,50026,48963,48044,47146,46133,68971,67021,65187,63386,61584,59807,58191,56745,55401,54211,66812,65029,63342,61684,60024,58323,56831,55503,54225,53119,64786,63079,61587,60081,58510,56930,55589,54395,53153,52122,62783,61186,59801,58428,56972,55570,54286,53213,52071,51059,61035,59574,58222,56942,55677,54320,53159,52125,51060,50042,59401,57959,56746,55540,54383,53127,52034,51086,50033,49111,57907,56561,55381,54322,53234,52048,50930,50036,49010,48097,56485,55307,54147,53105,52152,51036,49942,49005,48094,47188,55188,54036,52998,51994,51085,49965,48966,48083,47053,46227,53992,52925,51929,50871,50002,49014,47998,47107,46136,45281};

int f(int x)
{
	if(x==0)
		return 0;
	return f(x/10)+x%10;
}

int solve(int n)
{
	int cur=1;
	int ans=0;	
	while(cur+step<n)
	{
		ans+=block[cur/step];
		cur+=step;
	}
	
	for(int i=cur;i<=n;++i)
		if(i%f(i)==0)
			ans++;
	return ans;
}

int main()
{
	int T;
	int Cas=0;
	scanf("%d",&T);
	while(T--)
	{
		int l,r;
		scanf("%d%d",&l,&r);
		int ans=solve(r)-solve(l-1);
		printf("Case %d: %d\n",++Cas,ans);
	}
	return 0;
}

打表程序

int block[10005];
const int size=1e5;
int f(int x)
{
	int ans=0;
	while(x)
	{
		ans+=x%10;
		x/=10;
	}
	return ans;
}

int main()
{
	freopen("in.txt","r",stdin);
	freopen("out.txt","w",stdout);
	for(int i=1;i<=1e9;++i)
	{
		if(i%f(i)==0)
			block[(i-1)/size]++;
	}
	for(int i=0;i<=10004;++i)
		printf("%d,",block[i]);    
	return 0;
}

2019 Multi-University Training Contest 9 Rikka with Quicksort

题意:定义函数
g m ( i ) { 0 1 ≤ i ≤ m i − 1 + 1 i ∑ j = 1 i ( g m ( j − 1 ) + g m ( i − j ) ) i &gt; m g_m(i)\begin{cases} 0 &amp; 1\le i \le m\\ i-1+\frac 1i \sum_{j=1}^i(g_m(j-1)+g_m(i-j)) &amp;i&gt;m\end{cases} gm(i){0i1+i1j=1i(gm(j1)+gm(ij))1imi>m
设S_n是前n项的和,可以得到 g m ( n ) = n − 1 + 2 n s n − 1 g_m(n)=n-1+\frac 2ns_{n-1} gm(n)=n1+n2sn1
向前递推可以得到: g m ( n − 1 ) = n + 2 n − 1 s n − 2 g_m(n-1)=n+\frac 2{n-1}s_{n-2} gm(n1)=n+n12sn2
移项得到: { ( g m ( n ) − n + 1 ) × n = 2 × s n − 1 ( g m ( n − 1 ) − n ) × ( n − 1 ) = 2 × s n − 2 \begin{cases} (g_m(n)-n+1)\times n=2\times s_{n-1}\\ (g_m(n-1)-n)\times(n-1)=2\times s_{n-2} \end{cases} {(gm(n)n+1)×n=2×sn1(gm(n1)n)×(n1)=2×sn2
两式相减得到: g ( n ) n + 1 = 2 n n ( n + 1 ) + g ( n − 1 ) n \frac {g(n)}{n+1}=\frac {2n}{n(n+1)}+ \frac {g(n-1)}{n} n+1g(n)=n(n+1)2n+ng(n1) a n = g ( n ) n + 1 a_n=\frac {g(n)}{n+1} an=n+1g(n),原式转化为 a n = a n − 1 + 2 n n ( n + 1 ) a_n=a_{n-1}+\frac {2n}{n(n+1)} an=an1+n(n+1)2n
递推可以得到: a n = a m + 1 + ∑ i = m + 2 n 2 i i ( i + 1 ) a_n=a_{m+1}+\sum_{i=m+2}^n \frac {2i}{i(i+1)} an=am+1+i=m+2ni(i+1)2i ( i ≥ m + 2 ) (i\ge m+2) (im+2)
通过对后面项的裂项等操作,最终可以得到
g m ( n ) = 3 m m + 2 ( n + 1 ) + 2 ( n + 1 ) ∑ i = m + 2 n 1 i − ( 2 n − 2 ) g_m(n)=\frac {3m}{m+2}(n+1)+2(n+1)\sum_{i=m+2}^{n}\frac 1i -(2n-2) gm(n)=m+23m(n+1)+2(n+1)i=m+2ni1(2n2)
我们对 1 i \frac 1i i1,以500000为一块,处理出前缀和。可以打表得到2000项,每一项分别代表 1 + 1 2 + ⋯ + 1 500000 , 1 + 1 2 + ⋯ + 1 500000 + ⋯ + 1 1000000 1+\frac 12+\dots +\frac 1{500000},1+\frac 12+\dots +\frac 1{500000}+\dots +\frac 1{1000000} 1+21++50000011+21++5000001++10000001,依次类推。最后查询的时候,计算出在哪一块中,然后块内暴力即可

代码

#include <iostream>
#include <algorithm>
#include <cstdio>
#define ll long long
using namespace std;
const int mod=1e9+7;
const int size=5e5; 

int T;
ll n,m; 

ll block[2005]={0,389417116,881884276,553560598,224432428,260751735,117569315,346569238,65973860,256727000,517470973,876872576,558995133,401034235,860051261,536279467,155788942,955368968,910520518,551669479,120304438,868572373,154582539,657446462,519742130,937315262,627424624,261857562,845041807,947164171,554328605,482373981,656331368,36059187,691227914,538023106,840211063,712172696,388741362,105309083,529978561,185368676,897343109,895444019,93875054,796757979,197837413,258616124,294171160,256252543,218059710,432483635,992370950,998412848,608415075,497589222,127363831,933703444,605748785,892473929,874956379,500087023,695700236,175774637,302540311,535825517,434730736,888251098,585400383,158924035,704261248,773664140,297528324,564952040,326818180,907093492,492252413,942671867,463421375,157069629,387370501,739182811,872587234,493403290,361055436,982695338,992982497,506967624,325135313,139432162,801394116,453282175,557360951,863788156,403960409,87987742,547993698,668279581,775785847,202341215,299703623,985901935,472678625,625901892,403957663,400898273,380758761,808106200,540946595,399100493,374446961,543807609,228705807,650166923,892207521,657180487,718954981,347048384,57611608,888748566,776424610,865895081,71562850,388913307,896393406,149844661,90704811,847090444,271738138,599648680,153293323,25276529,339320628,444749727,153347307,913959099,896068049,46732292,632403841,111671658,117739701,431209934,466237359,92531571,504300280,230286215,315016389,593369627,391019917,170185585,945735692,933492428,935020357,435114737,882658738,268811339,739835603,949251083,933165221,542499646,989769439,523226750,782121533,92948180,249519096,571311841,193556131,518177930,703222437,990319348,419413446,441470909,431786435,679913200,631744438,555918800,949953078,482508989,999174487,216453269,347817442,481802904,181159585,170484593,782823623,170348466,724333362,894176406,992209009,668353268,421432125,388368704,717981978,479900086,963213881,717830438,949213181,313261786,905975821,375088827,397787437,888156970,979828694,625110244,480573495,27116448,277991208,327190878,549719751,911236059,567216451,926379681,47229125,367041435,193523226,945980477,562775516,777761880,198426247,274321633,701258838,117844353,658499361,348615673,951483459,774167087,798815837,564219784,289824405,376946374,212292772,10903613,298288616,164895248,228285400,456895326,82003167,835113182,14644418,219675409,667403141,867649986,637219612,513019047,776881735,906719336,746273961,324433545,470673094,930426229,63221052,336356381,396553805,241846252,802421416,856290602,664109705,835723147,330618733,844530433,80898868,981109485,500911712,19012239,372936810,330748900,14763369,723787870,164434278,82327247,800155067,605234103,129543226,637773976,522371293,954838687,885734730,310622951,864146098,319564474,190734195,246200234,760467956,22662236,53928139,429662225,773945403,969760528,355892699,978407063,893464662,908021390,613233574,546378870,649265872,659568871,750616222,878639633,542952833,774648402,174676223,843228321,49232709,463526087,491571581,541144119,636833544,905462845,18734469,12962695,128738923,25064732,344556596,456113835,869386371,30891062,926461092,835590703,866124411,998294297,189177380,94421296,528948452,101236982,137544262,228585373,899481695,425340656,604975812,212863662,982588373,478630853,880849435,149414031,858716632,861806063,680329826,886786107,787961996,97375858,331778750,488255625,91643473,482696817,471903941,720231022,35501904,327391134,297918764,996892378,875624473,892970348,698628706,944223790,177359323,834468505,96043834,158651660,799943555,268307906,132305296,91501436,274017167,307171415,430246600,142950244,803909020,778054401,885071333,583898600,211359087,379263459,908310181,943017790,163092501,472894133,289723843,714964176,862932058,351490071,335517815,523579059,160745095,186863098,353121184,347680289,396002777,197519171,254876617,971331885,299997699,80705369,148894905,832751326,282450851,466349450,892767244,953811475,141750010,93805088,197002259,410698779,189488125,644717767,336988739,768779494,5912479,427111430,377980801,990750605,779389514,920318081,730269025,405160401,863910892,552002374,80416580,637404093,990383116,781085171,346918584,946658334,911285900,944989801,970687314,725156568,196919273,483078487,814269369,335140176,981721633,859157852,537167041,814845045,524124890,392641637,512141421,416081775,129452529,114656981,826629961,460416574,844552662,220993924,858326199,488746340,316201725,29560122,216345457,20169011,217177043,525595364,170644387,408960976,330742436,106978295,110465947,491908049,479850415,681471473,454012664,429628683,334245732,58122033,482115882,826487385,61454438,30503514,582477184,260591674,856049964,833912601,2773859,275349383,622296549,774855580,54916186,738787531,135709872,823183945,344915784,82126223,568517529,214903564,323549891,846479893,255018380,982212201,244220213,433985385,769833837,141937532,525761676,446953275,966219748,558261150,267020701,84127338,139057568,841776071,863807780,808773244,28693094,907368327,330606295,496950786,8320903,841131660,214044553,538257363,393795758,563997919,665964664,546234540,882496045,580279702,8450322,75522646,993754156,7482487,955916665,621978994,247561367,865567889,308068598,502463398,842596232,788299382,397110730,775124006,314934564,430290123,680815816,283439928,628852384,833125405,952681019,948331009,535841432,182780572,216765678,791618620,780975103,925883170,376023889,815542063,261389176,716672861,801658162,735391520,265596593,187869397,91699598,234246839,764918198,733195817,511700832,573234981,106145258,975736871,911267454,587548872,739393971,815147992,814157941,620386257,671802787,642304588,325919370,218133634,233034201,566433982,715878648,942034601,625378598,455466484,730009499,710958934,378907903,275853589,198286265,740737703,462512669,433331577,947151033,425391636,523579938,141789258,536898412,569797996,262628273,950911285,142820273,232803301,539768489,914068666,602447994,491263027,235455284,497761222,538198972,137133919,214191280,756396877,445514935,449849907,493630627,47228536,531830910,574068337,905192318,281025524,896019991,290667965,740494128,247838305,942747711,325078518,669511348,839080985,641305799,335468312,80632706,408283378,456548728,843159541,267448502,148733752,552369315,540881335,8751051,798998664,206840691,19843339,17660702,276223065,359904237,979477783,558390866,970805053,110359136,347506445,182907463,285252788,351902724,371656184,706703575,345418939,509166404,802570600,805761316,35372485,868781538,688336364,215982087,538141842,20607414,668262500,561336803,583247314,665695075,192520101,332434198,593806051,244445636,262913578,296096139,321547746,146919848,834151240,842092888,177765506,918082161,435069343,917457352,81755632,830767799,813510499,267667178,835990691,480488375,442362382,429939239,394651441,980195946,345126377,652990300,50831988,168766941,809108242,213746668,761807501,860340545,909220984,70455831,261056407,471021753,322774840,924987880,45363760,953037667,782046475,613453099,475441097,3429459,364684019,716134815,699270327,939302878,748009062,666207894,398114342,611865600,911278750,265886799,53153621,641182721,434476296,98208049,609829767,388621721,396545430,393532945,522703807,574587123,389156988,127861156,230562840,994167927,570751444,838670046,107879308,695283917,40848296,79683927,533329854,295133756,712656109,485611497,942243089,635797092,844123564,794413528,510513735,773300455,917922873,96883968,379298765,490174758,685976324,448813356,235982652,464292047,183541525,300836489,177647256,809512110,323574386,845031071,213752224,582250339,56384333,45343241,152392669,600429650,6734486,752724813,733212331,907896194,970754612,128127479,761517551,743059668,552885355,670965886,98794340,472836596,130554967,353477407,325178472,221922189,788809915,823162423,838350318,325363437,72618122,103238070,777328655,895577196,889659170,377600299,369958415,724360516,575792279,317927778,712574234,696348496,477561593,480835757,826319954,822088932,292518000,173129883,714847164,100903109,146562848,509872002,694354378,30509651,368423096,793096382,416995537,912265097,78047390,635124790,515614527,329022335,164655379,792929990,883437548,593861074,191546643,724921103,570563608,364763007,889578173,323091544,970593659,105177566,334105917,446841838,519192814,69674243,70546640,301701567,221138328,775945591,50866163,118967946,586137233,357062752,869826821,879371631,570826740,881226630,111952250,637838809,81260372,956684052,262099384,243147555,254165158,625392356,851304014,75278025,341300141,889180150,604214413,838429372,468732558,229023163,262000883,163264861,579612995,829182493,441402731,889667661,459999762,102035773,547225521,411031724,300848330,273947779,695529921,21430378,674275612,208075884,517541212,680853499,713369894,49495696,156421228,27721949,79515474,840654300,341515196,411256694,977431599,891010280,570452602,970033134,912488358,34676307,605156838,825939,56162774,317514406,553271166,968573110,147422075,872439661,708853592,391075505,232841459,795407218,391327141,652489241,634448624,875070467,694991690,679206205,535111282,228223288,219147590,272752045,208649582,283364033,849812195,698940617,688584882,641498780,767860645,455485924,420896037,331410012,213780045,614815198,884616760,903969475,119476258,948700634,188432777,173366382,253432377,981988015,839747958,9972884,710404455,265040543,632766417,584278645,996580019,898235586,20804500,473365059,111506955,625076457,16967458,156934123,465670591,540091039,20269436,167257252,720882896,257419317,354651261,237528245,622195384,566697660,23176274,225807662,589188960,156540145,628083401,593965224,972173742,527434258,45419594,338543393,157076345,259063313,851981978,444248903,49033251,516869051,719101844,313817985,604873745,305869681,528104924,493528919,691270138,734963854,501247650,197766490,70087719,798226158,535552827,896336218,735066836,354472923,832378318,371412817,469133061,489817232,451650053,616040351,625830647,596732314,38979565,486982966,991574969,402379357,255879717,314004690,541696576,537330486,708776422,30977444,741312802,947304195,381995397,124325062,725518836,976014973,257533181,450850674,906948760,901262181,49293649,955255717,943549130,440111488,711671089,53222380,410346707,450538058,479857861,363670182,514669437,493526521,165325493,725077347,97888782,399102326,311945460,630022204,687119304,276349041,29196624,533417615,606383129,572250039,271050735,922645861,664547924,348873742,961864369,866756797,695170893,651127832,249306264,726333652,999957224,319491323,646279525,421305744,421002278,505167105,867311258,107977989,637052146,457483343,100213508,212077938,489319526,967327512,698586733,33490544,759783390,745899187,143578174,964625899,107716047,685294202,884902791,408869465,675385514,782873514,153041933,512264754,777859724,753534275,695819542,890050157,521743891,466432933,347618735,670353054,17603825,440383757,941919947,502057106,551140497,258292363,648670900,868869323,651559648,188008608,876494743,726741755,863555310,48808113,728736601,540603499,232531229,739327008,116406559,192533803,951173788,457969670,95507961,441344936,440425658,165742244,444133736,180260478,122097442,566022731,433827005,351764771,301042466,977290752,314607388,421266407,996181647,559104821,110142891,599861657,430664847,750170433,631136753,247611860,263908324,871398198,372449225,259195465,446784731,996025972,823007439,831435669,914692855,584275727,510157358,742548687,140754271,845495362,386257305,257654985,377770688,224329231,648424224,300658145,817646545,992710638,914820375,924189496,932956678,877491804,846497903,618429094,656239365,518718248,34711594,766836529,869436923,181140271,195502288,164306906,223049721,932182776,695632170,6121988,551161050,591810437,131353407,719557720,235158219,911253527,31968369,805303356,716312750,738655543,204814673,685492181,933150979,82460898,705317584,784368931,210267603,162571769,902780323,911673042,702176718,438361881,584122721,6420342,162842303,114024001,858848369,753275805,914901517,880133902,834986532,83592767,778120230,293534685,353643635,671472330,292046340,494237566,193201468,690558980,65631547,134465071,587441657,738646042,525246917,749876495,604339783,833852913,570717357,242199917,215830292,174401287,453220513,857380225,858257690,29074626,741007415,716972112,878965771,918370289,724745841,83430985,23195600,889243891,518948724,699046680,507900974,636316098,727997349,446175190,178641360,790878300,30041257,548150047,943552991,304957524,233722078,456286197,809975497,274092515,310624626,566099045,534647680,913137157,455789264,771321639,214906527,436076267,955605881,962257384,396605041,42178612,933846753,988077852,158473053,596232835,8422378,298408887,915164042,560446696,361589303,3912078,522028220,656192864,975877183,826721597,438718031,627399847,762874455,576975132,63437901,656592501,758660789,785536396,579742444,138539751,145273995,427295347,658914229,165638733,412748580,902893714,452422427,595128242,183420673,904728539,586546460,160788667,590117309,817154218,735442196,979079552,329617038,323295238,698182005,936483886,105071352,539909358,611822739,273836774,584683161,71225520,143036808,723246366,896915971,775865813,757517288,451764301,455873557,400794681,88203009,925756070,355320244,766331866,856546844,90720390,309008031,721793982,163330479,208089255,284289699,729347670,757098890,194035908,680858623,206850102,548358526,798607097,496773709,643655693,200035282,748442012,877679940,393014716,302392150,673681579,981809957,814199119,179859817,393662717,113114273,742796284,847890210,464585146,273659347,137521346,616378841,324835914,843483672,246407282,146581482,590352640,938302779,702247251,436708363,279262443,603190674,83647804,472472726,363769511,152803930,946611338,754928908,824426917,184999414,838569581,557564494,383495983,430898953,746340889,725476438,226957248,811540867,927388262,682901457,785444453,791820542,658864507,456435086,803920002,780639497,415735258,920284017,815789669,990212324,921909856,158939364,812133339,453178086,576655831,703143840,660536671,591541828,635831015,864028341,501334000,292843278,658815022,995894538,975331884,116318764,309816261,143108904,731626913,108755464,369296187,100548986,961188455,700393517,53713173,611003927,621878087,204605393,432284479,340625516,955949273,472526054,42021113,622764190,259734068,318776556,824646990,137324139,281522273,439923989,462404170,251152863,902214464,992229008,798284513,303360657,723028008,214147822,900842497,522269756,324378424,506190799,31243697,123257389,410523198,181870595,616966886,13232168,718110650,148222998,228773372,806988723,911980928,331093219,228660174,4467371,933496938,39661840,561473393,183682919,147112856,453475322,371964715,981006044,160335324,141759218,932011166,841889811,925054467,939838157,14948071,225502052,489255251,120235385,741546464,707056071,47667348,911937328,950135025,910876492,471242403,393263530,478020176,677396620,603963882,229235433,693694411,164893143,102330997,348930241,778460218,191038882,602068215,118497615,292503186,799506446,793426520,319659351,454805497,257953774,379122601,157844454,258055056,411486499,369867007,575347047,699008212,942847245,944251486,893554817,60398046,570083005,787242034,12490793,799527110,290981484,337398837,956721687,705918891,592272749,783630643,679147777,137602889,925221793,361516628,345359848,89545275,205091068,202557990,84260159,373566327,538381261,225298631,812434888,554742575,686815125,366543172,455613631,710718080,34682776,868963785,974917736,610251883,968789153,502926489,280672990,644091186,57424102,163493553,35189487,813415264,380987962,994924108,618092756,434774307,452886215,318433738,628065168,242574397,202391056,702991705,693971606,57526831,546531597,586672671,633153341,440416879,916735363,87596049,178406410,572671848,211296225,729512740,918901933,771374890,999080482,542698661,254073511,302683255,406303100,606049149,415782250,569537387,314027973,182146137,868497410,868529356,786511953,789129142,679428192,243079097,479027780,731329651,620551045,563329076,916785714,808571737,395459733,653366773,386199647,395406418,373449044,833598471,335921981,29318056,326536876,317139270,981301286,409025531,700738585,562631959,190730019,627560387,266280692,531514690,375289525,103524186,722203202,143258325,137152895,207509362,131733346,191628679,772066635,137929026,862426374,861259567,4521619,57924370,630515180,188797797,492263768,336997649,505350586,476012756,471297637,152663007,681657137,741338990,688052265,262294828,246047274,420458654,185213150,866909380,559009391,979671928,559004510,710467521,380936186,58011431,731511240,705705059,464171394,873168245,514739941,968561226,677924054,525481154,267937090,921013575,56269077,314593293,585048709,185794685,327921878,461664578,211149558,277226950,820809370,222473208,149716265,344310275,642597773,164741562,541976947,205122217,578230562,914862108,138342548,969034915,108801333,191542875,837524283,302316228,349752663,465063693,484534109,399140014,30036658,464419894,706424275,688420298,289241734,528631763,999228618,112402264,183326067,490921942,556677581,151491026,411556388,200484827,402099470,111571174,611447694,250475091,8007887,722810866,348653588,935509511,680248379,668624876,206978298,939723686,750511958,144520355,453524897,504580877,162014354,93769428,758525986,806874801,650080483,794170657,367960257,679630385,314701963,74738395,354443972,762160779,175599241,65866925,680425617,777576606,897621603,22111448,160822323,415308584,723912010,135029452,832847150,799083566,814808781,953631184,858152935,972533318,692089121,658976380,782989268,49939295,787302792,892850702,304108470,109774344,714566023,373162740,588664579,116476013,303353284,274593180,784918493,711768279,945010033,303926936,973828039,914630948,850355275,212925783,859163703,529848655,929095859,192901914,170339590,985052818,124728340,578155565,455979481,605777218,65237269,699637142,94088445,228885201,672399383,828823391,754928771,57521826,431540442,387205131,527908225,410487464,562593076,574352165,414351608,682685261,37543583,615748262,761993353,379733355,917311825,291377225,357787091,47444855,89867907,535136576,787229851,370476359,125265137,209382736,29783439,892709245,913473120,915667077,314640831,307405918,658084698,533807867,916519165,487154669,397026001,694159220,778701877,997868324,659413629,624218138,157577865,363386280,328875402,404338312,870467638,218959588,136111460,618522582,208602533,612900277,357469376,985368038,14248252,123144193,297390096,545433933,256283197,569624187,814113387,48299749,43813594,142786049,463277580,777421606,867710618,839188154,384365181,963975440,891517022,183825221,821995493,805714418,370525045,367873472,147044444,924257051,275306245,449294689,507074986,806657966,824749191,638182780,346674265,55800762,746967799,962983911,827849602,183930350,387070203,949783426,814589900,880068416,842957571,564374056,801841125,224984765,773733355,265676925,332703346,275956497,519092991,396679834,934345340,368641496,450579596,754190920,109368641,252080293,363445830,210397673,136323514,209873051,5302170,951400423,945322884,669724648,288681170,479962412,569024020,410045432,282727176,477146710,244906158,593244473,102366699,178494482,461397151,130920516,132547326,668511900,258743775,256615293,744129593,229349869,158233613,271882058,577971127,659238085,613600554,577408535,620096753,563035954,942058954,247225826,394624963,640851700,213336642,807040045,751464724,573836850,602786455,751242666,767092390,40189818,905939563,846681441,647968282,152406455,335457034,707949528,700155510,322288153,582256201,241406619,147472017,671719842,326430492,271537091,118318562,130872560,214792275,175988967,42761158,538229443,490813396,631514013,395122909,138810550,984426225,263473971,98117698,761853121,113190704,544104102,409038272,241138305,149819271,737424861,50235825,458829333,518723111,649395755,3438202,288171817,912457808,662356488,628843304,762767804,751488641,844443702,399809383,567843845,998342867,524979882,236091556,827600166,378655393,650000007};

ll QuickPower(ll base,ll n,ll mod)
{
	ll ret=1;
	while(n)
	{
		if(n&1)
			ret=(ret*base)%mod;
		base=(base*base)%mod;
		n>>=1;
	}
	return ret;
}

ll sum(ll n)
{
	ll cur=n/size;
	ll ans=block[cur];
	for(ll i=cur*size+1;i<=n;++i)
		ans=(ans+QuickPower(i,mod-2,mod))%mod;
	return ans;
}

int main()
{
	scanf("%d",&T);
	while(T--)
	{
		scanf("%lld%lld",&n,&m);
		ll ans;
		if(n==m)
			ans=0;
		else if(n==m+1)
			ans=m%mod;
		else
		{
			ans=(3*m%mod*QuickPower(m+2,mod-2,mod)%mod*(n+1)%mod+2*(n+1)%mod*(sum(n)-sum(m+1))%mod)%mod;
			ans=((ans-2*n+2)%mod+mod)%mod;
		}			
		printf("%lld\n",ans);
	}
	return 0;
}

打表程序

#include <iostream>
#include <algorithm>
#include <cstdio>
#define ll long long
using namespace std;
const int mod=1e9+7;
const int size=5e5;
ll block[2005];

ll QuickPower(ll base,ll n,ll mod)
{
	ll ret=1;
	while(n)
	{
		if(n&1)
			ret=(ret*base)%mod;
		base=(base*base)%mod;
		n>>=1;
	}
	return ret;
}

int main()
{
	freopen("in.txt","r",stdin);
	freopen("out.txt","w",stdout);
	ll ans=0;
	for(int i=1;i<=1e9;++i)
	{
		ans=(ans+QuickPower(i,mod-2,mod))%mod;
		if(i%size==0)
			block[(i-1)/size+1]=ans;
	}
    for(int i=1;i<=2005;++i)
    	printf("%lld,",block[i]);
      
	return 0;
}
#include <iostream>
#include <algorithm>
#include <cstdio>
using namespace std;

double block[1006]={0,1.66666666666666670000,1.61904761904761910000,1.61805555555555560000,1.61803444782168190000,1.61803399852180350000,1.61803398895790210000,1.61803398875432270000,1.61803398874998900000,1.61803398874989690000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000,1.61803398874989490000};

int t;
string n;
double a;

int main()
{	
	scanf("%d",&t);
	while(t--)
	{
		cin>>n>>a;
		if(n.size()>=3)
			printf("%.10lf\n",block[100]*a); 
		else
		{
			int x=0;
			for(int i=0;i<n.size();++i)
				x=x*10+n[i]-'0';
			if(x>=100)
				printf("%.10lf\n",block[100]*a); 
			else
				printf("%.10lf\n",block[x]*a);
		}
	}  
	return 0;
}

打表程序

#include <iostream>
#include <algorithm>
#include <cstdio>
using namespace std;
double block[1010];

int main()
{
	freopen("in.txt","r",stdin);
	freopen("out.txt","w",stdout);
	
	double five=sqrt(5.0);
	double x=(1.0+1.0*five)/2.0;
	double y=(47.0+21.0*five)/2.0;
	
    for(int i=1;i<=1000;++i)
    {
    	double t=pow(y,i);
    	block[i]=x+five/(t-1);
    }
    for(int i=1;i<=1000;++i)
    	printf("%.20lf,",block[i]);
	return 0;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值