一段时间的总结

1.一个简单的dp问题

http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=17083

这个题的代码比较简单,状态转移方程也比较容易。现在对于状态转移方程的理解有了不一样的感受,它就好像高中时写通项公式一样,熟练之后就能很快的写出来。

代码如下:

 1 #include <iostream>
 2 #include <cstring>
 3 #include <algorithm>
 4 using namespace std;
 5 char str1[1005],str2[1005];
 6 int len1,len2,dp[1005][1005];//数组太大一定要放在主函数的外面
 7 int main()
 8 {
 9     while(cin>>str1>>str2)
10     {
11         len1=strlen(str1);
12         len2=strlen(str2);
13         for(int i=0;i<=len1;i++)
14         dp[i][0]=0;
15         for(int i=0;i<=len2;i++)
16         dp[0][i]=0;
17         for(int i=1;i<=len1;i++)//i=len1是为了将if条件照顾到
18         for(int j=1;j<=len2;j++)
19         {
20             if(str1[i-1]==str2[j-1])
21             dp[i][j]=dp[i-1][j-1]+1;//状态转移方程1
22             else
23             dp[i][j]=max(dp[i-1][j],dp[i][j-1]);//状态转移方程2。。。。当为 = 时仍然能够满足条件
24         }
25         cout<<dp[len1][len2]<<endl;
26     }
27     return 0;
28 }
View Code

2.素数筛选法的实例

http://acm.nefu.edu.cn/JudgeOnline/problemShow.php?problem_id=1151

这个题一直在想办法优化,最初的打表虽然能过但代码太长。然后就找到的素数筛选法,一个比较优化的代码。。

最初的打表代码:

 1 #include <iostream>
 2 #include <cstring>
 3 #include <math.h>
 4 #include <stdio.h>
 5 using namespace std;
 6 
 7 int main()
 8 {
 9 
10     int data[7704]={-1,3,5,11,17,31,41,59,67,83,109,127,157,179,191,211,241,277,283,331,353,367,401,431,461,509,547,563,587,599,617,709,739,773,797,859,877,919,967,991,1031,1063,1087,1153,1171,1201,1217,1297,1409,1433,1447,1471,1499,1523,1597,1621,1669,1723,1741,1787,1823,1847,1913,2027,2063,2081,2099,2221,2269,2341,2351,2381,2417,2477,2549,2609,2647,2683,2719,2749,2803,2897,2909,3001,3019,3067,3109,3169,3229,3259,3299,3319,3407,3469,3517,3559,3593,3637,3733,3761,3911,3943,4027,4091,4133,4153,4217,4273,4339,4397,4421,4463,4517,4549,4567,4663,4759,4787,4801,4877,4933,4943,5021,5059,5107,5189,5281,5381,5441,5503,5557,5623,5651,5701,5749,5801,5851,5869,6037,6113,6217,6229,6311,6323,6353,6361,6469,6599,6653,6661,6691,6823,6841,6863,6899,7057,7109,7193,7283,7351,7417,7481,7523,7607,7649,7699,7753,7841,7883,8011,8059,8101,8117,8221,8233,8287,8377,8389,8513,8527,8581,8719,8747,8761,8807,8849,8923,8999,9041,9103,9293,9319,9403,9461,9539,9619,9661,9739,9833,9859,9923,9973,10009,10079,10169,10267,10433,10457,10487,10559,10589,10631,10663,10687,10723,10853,10861,10909,11257,11311,11369,11447,11633,11743,11867,11909,11927,11953,12007,12097,12113,12143,12203,12301,12409,12421,12457,12479,12503,12547,12647,12763,12841,12959,13003,13037,13103,13171,13217,13297,13331,13469,13513,13591,13613,13649,13693,13709,13757,13859,14051,14107,14159,14177,14437,14479,14503,14591,14713,14723,14783,14867,14923,14969,15061,15227,15271,15299,15313,15413,15511,15641,15683,15823,15973,16061,16073,16091,16127,16141,16253,16411,16451,16519,16693,16703,16901,16921,17117,17189,17291,17333,17377,17387,17417,17483,17539,17627,17659,17761,17911,17987,18049,18149,18181,18217,18229,18311,18433,18443,18617,18661,18719,18757,18787,18917,19013,19213,19433,19463,19501,19577,19759,19777,19819,19913,20047,20063,20107,20161,20231,20297,20341,20441,20477,20719,20759,20773,20873,20899,20959,21089,21149,21179,21191,21269,21317,21379,21493,21529,21587,21727,21757,21817,21937,22027,22067,22093,22367,22549,22651,22721,22751,22811,22853,22907,23087,23209,23251,23431,23539,23563,23669,23801,23887,23899,23929,24019,24071,24107,24133,24151,24197,24251,24379,24419,24439,24509,24631,24671,24781,24859,24917,25057,25163,25301,25307,25357,25409,25423,25601,25733,25763,25841,25919,25969,26003,26189,26263,26371,26423,26489,26591,26693,26783,26921,26953,27017,27073,27091,27437,27457,27581,27689,27733,27809,27847,27943,28057,28109,28279,28307,28393,28573,28643,28657,28807,29101,29137,29153,29269,29333,29383,29483,29569,29641,29683,29803,30071,30091,30113,30133,30253,30557,30577,30661,30707,30781,30829,30869,30881,31033,31069,31181,31189,31267,31277,31489,31513,31667,31729,32003,32143,32233,32261,32299,32323,32341,32533,32603,32719,32797,32911,32933,32969,33013,33029,33083,33191,33203,33347,33457,33469,33569,33647,33749,33769,33827,33911,33967,34057,34259,34351,34367,34421,34543,34607,34651,34729,34843,34919,35023,35081,35311,35363,35393,35507,35617,35731,35801,35977,35993,36083,36251,36293,36307,36451,36563,36599,36683,36847,36887,36929,36943,36997,37049,37061,37217,37273,37489,37657,37831,37853,37889,37967,38039,38053,38153,38351,38377,38459,38669,38711,38833,38851,38917,39043,39199,39217,39239,39317,39451,39509,39521,39733,39979,40093,40151,40163,40277,40289,40459,40483,40577,40637,40693,40801,40819,40897,40961,41051,41351,41467,41491,41597,41647,41719,41843,41983,42043,42181,42293,42307,42461,42499,42569,42643,42697,42853,42863,42979,43151,43223,43283,43313,43391,43633,43651,43787,43889,44029,44111,44171,44221,44453,44621,44633,44657,44729,44753,44809,44879,44971,45061,45191,45329,45541,45557,45631,45673,45863,45971,46237,46279,46307,46349,46441,46451,46573,46619,46751,47123,47237,47297,47417,47563,47623,47713,47837,47857,47911,47963,48073,48131,48259,48281,48337,48481,48533,48593,48647,48731,48751,48821,48847,49031,49139,49207,49411,49451,49523,49639,49667,49739,49789,49843,50123,50177,50341,50383,50497,50591,50707,50857,51059,51131,51137,51193,51427,51517,51581,51599,51769,51829,51893,52051,52163,52301,52363,52711,52769,52859,52903,52981,53069,53093,53113,53233,53299,53353,53377,53437,53681,53759,53777,53819,54001,54013,54083,54251,54277,54331,54371,54601,54667,54727,54779,54881,55001,55351,55589,55609,55661,55681,55697,55733,55787,55843,55997,56081,56101,56197,56311,56393,56569,56611,56633,56701,56983,57037,57107,57193,57259,57329,57397,57493,57649,57689,57731,57751,57803,57847,57917,57943,58057,58067,58217,58309,58511,58567,58699,58907,59149,59209,59417,59447,59651,59723,59779,59833,59951,60101,60149,60223,60343,60373,60509,60647,60727,60821,60869,60943,61051,61231,61357,61609,61627,61651,61723,61819,61871,61979,62141,62273,62327,62423,62467,62507,62627,62761,62791,62921,62981,63059,63113,63241,63313,63391,63443,63467,63527,63589,63629,63709,63793,64081,64157,64451,64483,64679,64747,64853,64951,65269,65371,65557,65587,65609,65701,65731,65777,65839,65881,66089,66179,66373,66569,66749,66821,66851,66959,67043,67141,67157,67247,67271,67349,67447,67577,67607,67883,67901,68071,68099,68219,68239,68437,68639,68687,68711,68743,68821,69019,69109,69163,69193,69337,69491,69653,69697,69767,70117,70123,70207,70229,70297,70327,70423,70481,70571,70621,70663,70843,70891,70957,71081,71143,71287,71387,71471,71761,71837,71941,71993,72019,72251,72337,72559,72673,72727,72901,72931,72949,73009,73121,73259,73331,73369,73453,73757,73943,74071,74093,74201,74311,74323,74509,74527,74729,74959,75211,75269,75431,75629,75689,75707,75937,75983,76031,76079,76163,76261,76403,76481,76537,76631,76673,76757,76777,76883,76913,77047,77101,77191,77249,77263,77377,77431,77557,77719,77747,77813,78079,78139,78203,78283,78317,78467,78509,78649,78721,78787,78919,79111,79151,79159,79493,79559,79817,79861,79907,80071,80207,80341,80429,80473,80491,80557,80737,80783,80917,81013,81043,81077,81203,81233,81371,81707,81919,81931,81973,82217,82361,82463,82549,82657,82757,82763,82799,82903,83059,83101,83219,83443,83617,83689,83737,83857,84011,84211,84317,84347,84443,84457,84499,84551,84809,84871,84961,85093,85133,85159,85213,85369,85447,85597,85843,86011,86083,86171,86263,86287,86579,86629,86729,86753,86927,86959,87121,87187,87557,87671,87739,87803,87931,87959,87991,88301,88463,88589,88789,88799,88867,89021,89069,89083,89213,89273,89459,89521,89599,89633,89753,89783,89839,89923,89989,90023,90163,90203,90247,90353,90401,90499,90703,90787,91009,91081,91183,91199,91309,91387,91397,91513,91691,91711,91771,91997,92077,92381,92419,92467,92569,92671,92779,92831,92857,93169,93187,93253,93283,93307,93493,93629,93683,93763,93901,93971,94261,94397,94441,94621,94723,94777,94907,94999,95027,95153,95233,95279,95429,95467,95531,95651,95731,95869,95881,96053,96293,96337,96377,96487,96737,96797,96827,97001,97039,97081,97159,97441,97511,97651,97777,97843,97931,98009,98017,98207,98221,98269,98299,98519,98543,98597,98669,98731,98887,98927,99079,99149,99317,99391,99497,99551,99923,100129,100279,100357,100391,100459,100483,100609,100693,100829,101051,101081,101161,101267,101489,101503,101627,101701,101741,101807,102001,102019,102121,102197,102229,102359,102461,102533,102653,102679,102797,102953,103049,103069,103231,103399,103451,103613,103681,103913,103979,103991,104087,104161,104381,104471,104801,104827,105211,105229,105449,105517,105529,105653,105817,105863,105929,105971,106087,106307,106363,106373,106487,106621,106657,106699,106759,106801,106949,107137,107309,107641,107693,107747,107837,107903,107951,107981,108161,108271,108289,108421,108517,108643,108677,108739,108799,108929,109049,109303,109387,109673,109721,109793,109987,110051,110063,110129,110323,110491,110587,110603,110753,110927,110939,111271,111409,111653,111767,111791,111847,111913,112097,112129,112223,112327,112363,112501,112571,112831,112901,113051,113081,113159,113189,113233,113357,113537,113779,113909,113989,114089,114547,114601,114689,114761,114809,114833,114913,115127,115201,115223,115337,115429,115769,115777,115853,115901,116113,116189,116279,116371,116483,116803,117023,117133,117167,117269,117307,117437,117503,117563,117779,117811,117839,117973,118189,118297,118361,118457,118471,118549,118787,118967,119291,119311,119447,119551,119591,119699,119771,119839,119981,120097,120181,120223,120331,120623,120647,120817,120929,121019,121081,121271,121367,121523,121577,121609,121921,121951,122051,122131,122149,122209,122273,122471,122533,122833,122849,123203,123307,123379,123419,123619,123661,123791,124121,124309,124349,124459,124567,124601,124777,124783,124979,125113,125507,125527,125597,125651,125753,125821,125927,126013,126047,126107,126131,126223,126491,126541,126761,126943,127033,127123,127277,127301,127399,127487,127507,127643,127681,127763,127807,127913,127997,128257,128311,128551,128603,128629,128683,128969,128981,129229,129287,129361,129401,129443,129497,129757,129853,129959,130021,130043,130411,130477,130553,130729,130927,130969,131071,131111,131249,131311,131431,131449,131543,131707,131939,132019,132229,132257,132541,132611,132623,132721,132857,132949,132971,133087,133213,133271,133403,133493,133697,133769,133873,133963,134033,134081,134177,134243,134341,134489,134507,134597,134683,134909,135007,135059,135151,135281,135391,135409,135463,135637,135671,135731,135829,135899,136067,136277,136351,136399,136483,136547,136753,136813,136979,137077,137273,137383,137453,137593,137743,137777,137867,137999,138143,138559,138577,138637,138739,138799,138883,138893,138937,139241,139361,139409,139493,139589,139661,139703,139907,139939,139981,139991,140297,140339,140411,140453,140627,140929,141041,141079,141161,141277,141353,141619,141649,141707,141761,141833,141917,141971,142031,142403,142427,142559,142699,142799,142939,143053,143401,143477,143569,143617,143797,143827,143909,143953,144311,144481,144701,144719,144847,144931,144973,145253,145391,145451,145501,145547,145643,145757,145903,146051,146173,146323,146527,146701,146837,146989,147083,147263,147319,147401,147481,147671,147881,148073,148091,148157,148201,148229,148301,148439,148469,148579,148627,148691,148931,148997,149021,149057,149239,149323,149417,149503,149767,149791,149909,150097,150247,150323,150343,150383,150589,150611,150697,150779,150883,150979,150991,151343,151391,151681,151693,151813,151841,152041,152083,152311,152407,152563,152671,152717,152767,152953,153427,153487,153521,153589,153763,153877,154081,154211,154351,154643,154723,154733,155087,155231,155377,155579,155593,155627,155747,155809,156131,156371,156421,156601,156671,156691,156797,156833,156967,157037,157141,157177,157259,157457,157571,157771,157951,158161,158227,158293,158359,158371,158449,158527,158551,158881,158923,159293,159361,159403,159437,159499,159667,159697,159793,159979,160163,160367,160403,160483,160603,160649,160681,160739,160807,160877,160981,161033,161123,161159,161341,161561,161639,161731,161761,161911,161983,162257,162269,162419,162523,162557,162623,162881,162947,163063,163171,163211,163309,163433,163627,163987,164011,164191,164429,164513,164677,164729,164821,164963,165083,165181,165367,165469,165541,165553,165673,165817,165983,166189,166273,166349,166601,166669,166741,166847,167033,167071,167113,167119,167197,167329,167341,167449,167597,167641,167747,167879,167891,168143,168277,168293,168481,168527,168617,168719,168869,169009,169181,169321,169361,169483,169607,169661,169733,169943,169991,170179,170341,170483,170609,170707,170809,170927,170957,171179,171271,171467,171559,171697,171713,171761,171793,171917,172009,172049,172157,172199,172663,172709,172721,172787,172807,172969,173087,173183,173249,173483,173531,173599,173669,173713,173807,173867,174289,174491,174571,174637,174653,174799,174893,174943,175039,175079,175333,175649,175781,175811,175993,176087,176161,176417,176641,176711,176741,176779,176791,176819,177007,177043,177131,177223,177337,177539,177763,177791,178289,178333,178351,178403,178639,178753,178813,178819,179021,179051,179213,179287,179581,179779,179923,179969,180073,180247,180263,180317,180473,180907,181031,181081,181193,181243,181439,181501,181523,181813,181889,181931,182009,182261,182417,182599,182653,182747,182821,182893,183301,183329,183461,183571,183581,183823,183871,183943,183973,184111,184321,184337,184447,184489,184823,184967,185027,185149,185177,185519,185747,185869,185923,185951,186049,186379,186481,186583,186649,186761,186773,187067,187123,187139,187189,187237,187471,187687,187711,187823,187897,188159,188299,188351,188369,188417,188519,188609,188687,188939,189151,189239,189347,189433,189479,189619,189887,189977,190243,190301,190321,190523,190573,190579,190807,190891,191137,191551,191563,191669,191837,191911,192007,192053,192161,192263,192347,192583,192629,192677,192737,192767,192853,193009,193031,193183,193373,193433,193619,193703,193763,193813,193873,193883,193957,194101,194263,194591,194723,194933,194989,195053,195077,195259,195277,195401,195581,195677,195991,196003,196139,196279,196303,196657,196709,196907,197023,197137,197159,197293,197567,197621,197647,197831,198073,198197,198223,198349,198479,198701,198833,198959,199033,199039,199211,199261,199343,199453,199679,199697,199813,199889,199933,200017,200029,200351,200731,200779,200843,200867,200983,200989,201203,201389,201491,201731,201757,201797,201827,201833,201947,202001,202289,202409,202591,202679,202823,202907,202973,203023,203117,203339,203351,203383,203563,203807,203821,203971,204019,204067,204107,204353,204461,204601,204797,204859,204973,205171,205213,205397,205507,205559,205633,205663,205837,205949,205967,206191,206281,206407,206551,206623,206639,206909,206917,207061,207433,207469,207511,207769,208009,208291,208409,208493,208627,208739,208931,208997,209189,209299,209353,209441,209621,209789,209837,209887,209959,210319,210557,210719,211073,211219,211231,211283,211297,211661,211789,211943,212039,212383,212467,212557,212837,212881,213067,213253,213289,213359,213383,213467,213943,214091,214133,214363,214439,214631,214651,214891,214967,214993,215141,215279,215353,215483,215653,215753,215833,216037,216173,216317,216431,216647,217121,217207,217223,217309,217337,217429,217643,217687,217697,217739,217771,217829,217969,218069,218143,218233,218371,218389,218447,218513,218579,218711,218761,219031,219133,219169,219313,219407,219533,219613,219679,219799,219851,219931,220573,220841,220889,221021,221059,221173,221239,221401,221539,221677,221713,221747,221813,222007,222161,222293,222403,222511,222823,222841,222953,223037,223099,223331,223339,223637,223747,223837,223999,224131,224261,224291,224423,224473,224629,224669,224711,224897,225023,225061,225119,225307,225349,225503,225601,225809,225961,226013,226123,226169,226231,226337,226511,226553,226601,226741,226871,226913,227053,227251,227471,227581,227597,227789,228013,228127,228337,228451,228733,228773,228847,228911,228961,229081,229133,229153,229247,229499,229547,229591,229693,229717,229937,230059,230077,230431,230453,230501,230827,230849,230999,231169,231317,231367,231409,231533,231901,231967,232117,232391,232523,232567,232847,233117,233267,233419,233599,233617,233759,233941,234007,234043,234103,234167,234281,234293,234511,234727,234743,235181,235307,235541,235607,235747,235877,235891,235951,236209,236329,236461,236549,236713,236749,236983,237011,237217,237331,237361,237409,237487,237571,237691,238031,238039,238109,238339,238477,238547,238729,238943,239017,239087,239231,239273,239357,239489,239567,239611,239633,239857,239999,240047,240283,240599,240707,240763,241127,241183,241229,241261,241463,241537,241867,241877,241919,241981,242083,242129,242201,242393,242521,242989,243161,243233,243301,243343,243431,243469,243613,243647,243673,243781,244147,244159,244219,244297,244367,244457,244471,244589,244603,244711,244733,244781,245177,245209,245389,245521,245629,245851,245989,246193,246289,246319,246509,246569,246683,246739,246907,247007,247073,247309,247363,247591,247603,247711,247799,247847,247943,248057,248177,248389,248597,248701,248753,248909,249181,249367,249427,249497,249589,249797,249853,249911,249943,250049,250259,250307,250433,250543,250739,250751,250949,250963,251081,251159,251191,251323,251417,251443,251473,251567,251843,251887,252319,252559,252731,252887,252899,252937,252971,253013,253157,253369,253423,253789,253867,254041,254053,254249,254389,254489,254713,254959,255023,255083,255137,255329,255487,255503,255713,255851,256057,256181,256189,256307,256561,256589,256609,257221,257287,257297,257489,257501,257561,257689,257921,258061,258173,258277,258299,258407,258491,258539,258611,258707,258733,258871,259151,259211,259309,259381,259627,259657,259723,260207,260317,260339,260461,260543,260857,260921,261061,261329,261407,261619,261637,261761,262079,262153,262271,262349,262391,262489,262511,262627,262649,262781,262853,262883,262937,263071,263183,263239,263399,263591,263803,263911,264091,264169,264283,264527,264619,264659,264731,264769,264961,265249,265483,265579,265757,265787,265831,266023,266093,266153,266261,266333,266599,266701,266719,267097,267301,267439,267587,267671,267803,268123,268283,268661,268757,268771,268841,268927,268979,268997,269039,269201,269341,269393,269431,269527,269713,269749,269779,269879,270239,270307,270323,270407,270539,270551,270913,271177,271211,271253,271333,271451,271501,271597,271811,271939,272131,272191,272267,272317,272333,272581,272771,272813,272917,272999,273061,273127,273271,273283,273359,273613,273979,274147,274201,274243,274441,274579,274667,274811,274837,274871,275053,275147,275299,275419,275461,275543,275623,275699,275773,275837,275897,275923,275999,276113,276181,276343,276557,276673,276721,276907,276961,277247,277301,277493,277579,277637,278041,278501,278623,278717,278981,279137,279173,279269,279451,279637,279707,279779,279823,280069,280121,280487,280537,280597,280811,280913,280967,281131,281207,281353,281419,281651,281867,282089,282241,282349,282703,282869,282917,283007,283111,283163,283403,283721,283937,284117,284153,284293,284467,284521,284633,284741,284957,285049,285101,285191,285469,285611,285773,285977,285983,286019,286397,286487,286633,286697,286753,286771,286981,287251,287501,287537,287597,287873,288181,288349,288467,288653,288731,288773,288851,289063,289127,289213,289283,289297,289453,289543,289951,290033,290119,290201,290243,290359,290443,290897,290959,290993,291007,291167,291371,291437,291503,291619,291743,291833,292079,292319,292351,292489,292693,292777,292841,292909,292993,293099,293123,293861,294053,294127,294313,294499,294523,294629,294703,294821,294859,294923,295049,295237,295291,295357,295567,295759,295837,295873,296017,296159,296347,296557,296651,296713,296819,296843,296981,297289,297397,297421,297629,297931,298013,298031,298247,298339,298589,298733,298853,298999,299137,299171,299261,299317,299393,299623,299771,299993,300017,300089,300247,300317,300413,300569,300683,301013,301219,301331,301363,301403,301463,301747,301897,301979,302167,302221,302297,302417,302593,302681,302909,302999,303119,303143,303299,303313,303361,303619,303679,303817,303931,303997,304193,304303,304429,304553,304763,304831,304897,304961,305093,305143,305281,305363,305477,305593,305849,305999,306121,306157,306329,306587,306847,306877,307019,307253,307283,307687,307817,307903,308027,308317,308491,308507,308527,308597,308701,308723,308887,308923,308939,309013,309083,309107,309167,309457,309637,309731,310019,310169,310273,310439,310501,310627,310771,310789,310997,311021,311177,311189,311329,311569,311681,311963,312029,312043,312101,312343,312401,312509,312703,312773,312967,313129,313307,313331,313387,313517,313561,313699,313853,313897,313921,314113,314263,314747,314927,315011,315199,315551,315569,315701,315803,315961,316037,316087,316109,316297,316681,316769,317029,317089,317489,317609,317621,317827,317887,317963,318137,318211,318443,318467,318569,318817,319049,319061,319169,319201,319339,319679,319687,320027,320081,320237,320431,320521,320791,321017,321037,321109,321187,321569,321611,321619,321679,321751,321779,321947,321991,322051,322097,322249,322271,322397,322429,322519,322589,322633,322727,322997,323027,323471,323597,323711,323951,323987,324251,324299,324341,324427,324491,324557,324757,324901,324953,325153,325229,325301,325541,325631,325751,325889,325951,326099,326113,326203,326251,326497,326863,326993,327247,327263,327463,327553,327629,327757,328343,328373,328411,328513,328633,328781,328789,328919,329299,329317,329773,329867,329993,330047,330061,330287,330329,330409,330557,330719,330877,331141,331207,331339,331391,331613,331693,331777,331801,331921,332069,332099,332179,332303,332417,332473,332513,332729,332749,332851,332903,333041,333107,333233,333283,333299,333367,333563,333701,333769,333871,334049,334133,334423,334429,334513,334681,334891,334973,335107,335161,335213,335507,335579,335807,335893,335953,336101,336353,336491,336593,336653,336727,336899,337039,337291,337661,337759,337837,337859,337873,337949,338269,338297,338431,338773,339127,339187,339223,339307,339517,339601,339751,339821,339907,340073,340201,340297,340337,340477,340601,340777,340859,341041,341287,341423,341491,341597,341777,341863,341953,342059,342239,342467,342521,342547,342679,342697,342847,343051,343141,343237,343303,343391,343631,343787,344017,344273,344327,344423,344857,344873,344917,345001,345067,345263,345479,345679,345727,345791,346097,346147,346187,346337,346669,346763,347057,347173,347227,347239,347651,347849,348001,348217,348247,348431,348559,348587,348671,348769,348811,349313,349357,349397,349663,349819,350089,350179,350503,350549,350737,350963,351059,351229,351413,351437,351517,351643,351727,351751,351811,352007,352057,352073,352357,352411,352543,352619,352771,352841,352949,353117,353359,353527,353621,353711,353747,354017,354163,354253,354313,354337,354551,354647,354877,355093,355109,355339,355609,355669,355909,356143,356173,356533,356561,356591,356821,356947,357103,357229,357389,357473,357509,357671,357823,358349,358447,358531,358601,358727,358859,358903,359027,359143,359209,359267,359323,359501,359987,360071,360223,360293,360749,360821,360907,361033,361219,361237,361357,361373,361447,361541,361561,361727,361877,362081,362333,362371,362407,362521,362903,362969,363037,363397,363463,363589,363691,363841,363977,364079,364223,364267,364373,364739,364751,364979,365069,365129,365147,365231,365461,365479,365507,365557,365591,366001,366031,366161,366199,366293,366313,366347,366437,366517,366599,366701,367021,367189,367207,367261,367321,367397,367663,367889,368077,368107,368117,368153,369181,369283,369331,369491,369851,369893,369959,370091,370213,370241,370387,370597,370661,370813,371131,371191,371387,371633,371737,371869,371941,371981,372269,372397,372689,372709,372751,372769,372877,373007,373229,373273,373561,373657,373951,374293,374317,374447,374681,374771,374849,375029,375559,375631,375761,375899,376003,376153,376241,376531,376573,376801,376841,376853,376921,376969,377129,377197,377291,377393,377633,377681,378011,378023,378239,378449,378569,378629,378667,378817,378949,379177,379207,379417,379499,379541,379979,379997,380059,380147,380291,380309,380333,380557,380753,380839,380879,380957,380977,381047,381097,381377,381481,381509,381631,381713,381911,381937,382271,382493,382621,382693,382751,382801,383083,383101,383147,383521,383533,383611,383651,383723,383807,383987,384067,384089,384203,384331,384509,384599,385069,385129,385291,385391,385417,385471,385837,386129,386219,386249,386329,386401,386431,386471,386887,386921,386993,387047,387403,387679,388009,388057,388117,388301,388373,388403,388673,388813,388837,388991,389029,389099,389167,389369,389513,389563,389659,389797,389867,390077,390097,390193,390307,390449,390499,390647,391009,391021,391151,391373,391387,391537,391661,391711,391801,391939,392221,392699,392737,392851,392969,393031,393157,393181,393311,393377,393401,393473,393541,393709,393871,394039,394129,394187,394369,394759,394817,394943,395047,395137,395191,395309,395581,395687,395741,395971,396199,396269,396373,396427,396523,396533,396631,396647,396887,396943,396953,397013,397073,397211,397253,397303,397751,398053,398149,398267,398467,398569,398591,398681,398821,398857,398917,399137,399197,399389,399401,399583,399601,399887,399953,400033,400151,400339,400417,400703,400871,401017,401077,401119,401407,401519,401957,402239,402361,402379,402503,402751,402767,403607,403679,403687,403861,403951,404029,404081,404221,404387,404827,404843,404951,405089,405401,405487,405497,405553,405659,405731,405901,405959,405989,406123,406247,406339,406501,406633,406807,406883,406951,407177,407377,407633,407717,407833,408049,408211,408223,408379,408427,408563,408623,408713,408743,408809,409043,409153,409259,409691,409733,409769,409891,409933,409993,410243,410461,410489,410687,410749,410819,410999,411041,411157,411421,411527,411617,411709,411821,411833,411923,412109,412457,412609,412967,413009,413069,413081,413353,413477,413557,413759,414017,414077,414313,414431,414571,414607,414767,415253,415343,415651,415669,415721,415873,415999,416023,416149,416263,416399,416417,416477,416623,416851,417007,417037,417133,417271,417643,417883,417959,418259,418331,418423,418631,418637,418783,418961,419051,419147,419189,419351,419513,419599,419831,420037,420191,420269,420361,420419,420593,420757,420779,420929,421339,421517,421607,421709,421783,421847,421907,421987,422069,422353,422393,422701,422711,422761,422861,423013,423617,423727,424339,424351,424597,424687,424769,424889,425251,425291,425309,425387,425701,425813,425837,425977,426161,426233,426401,426697,426709,426841,426973,427081,427351,427451,427529,427711,427781,427919,427969,428039,428093,428143,428167,428489,428797,428851,428977,429139,429329,429431,429463,429677,429731,429901,429973,430411,430487,430723,430789,430897,431029,431153,431297,431377,431479,431707,431801,431869,431929,432007,432251,432281,432389,432589,432743,432833,433357,433607,433663,433781,433813,433861,433963,434167,434209,434479,434561,434573,434761,434857,434933,434963,435107,435223,435277,435419,435541,435751,435859,435923,436081,436309,436427,436483,436591,436673,436831,436889,436999,437243,437387,437533,437641,437809,437837,437923,437977,438017,438271,438439,438589,438769,438899,439123,439183,439357,439511,439541,439687,439753,439781,439853,439867,440023,440093,440399,440501,440683,440761,440911,440987,441011,441193,441359,441499,441547,441907,442027,442237,442327,442537,442789,442961,443041,443129,443227,443237,443419,443489,443753,443873,444109,444131,444523,444529,444557,444671,444877,444887,445103,445183,445199,445297,445477,445741,445883,446123,446353,446417,446713,446983,447079,447133,447221,447311,447353,447449,447617,447749,447859,447883,448057,448139,448169,448187,448303,448397,448451,448769,448883,449107,449203,449263,449347,449417,449783,449807,449929,450113,450431,450829,450841,451013,451183,451207,451499,451681,451753,451859,451939,452041,452213,452329,452531,453199,453269,453329,453377,453683,453737,453797,453847,454021,454379,454507,454579,454843,454991,455381,455437,455789,455849,456013,456151,456283,456377,456499,456529,456697,456881,456979,457001,457267,457397,457507,457571,457711,457799,458027,458057,458179,458191,458239,458543,458797,458891,459023,459521,459791,459817,459883,460013,460051,460609,461101,461299,461327,461411,461437,461819,461977,462079,462103,462377,462493,462641,462653,462871,462887,462953,463249,463313,463433,463457,463483,463627,463693,463787,463891,463919,464137,464311,464437,464587,464803,464939,464993,465089,465187,465281,465337,465649,465821,466027,466069,466079,466243,466547,466603,466777,466897,467123,467479,467507,467681,467699,467743,468121,468241,468359,468463,468499,468581,468641,468773,468851,469121,469169,469207,469411,469583,469687,469801,469907,470077,470083,470149,470207,470213,470317,470791,470891,471061,471101,471187,471439,471467,471649,471719,471781,471803,471929,472123,472261,472391,472691,472721,472837,472993,473497,473519,473597,473617,473789,474029,474137,474311,474379,474533,474857,474983,475081,475159,475483,475619,475649,475729,475973,476029,476137,476249,476363,476591,476719,476849,476981,477149,477313,477619,477727,477739,477847,477863,477973,478111,478189,478253,478391,478427,478453,478637,478937,479029,479267,479509,479599,479701,479783,480023,480059,480341,480383,480409,480731,481043,481097,481153,481303,481489,481549,481577,481847,481861,482029,482099,482227,482387,482407,482659,482827,482899,482957,483209,483491,483557,483643,484339,484447,484531,484607,485059,485609,485689,485717,485777,486179,486329,486449,486509,486583,486643,486713,486907,487013,487049,487211,487427,487651,487717,487793,487873,488021,488249,488333,488347,489053,489113,489133,489263,489677,489823,489911,489959,490033,490249,490463,490577,490643,490733,490837,490967,491041,491081,491149,491329,491483,491503,491669,491747,492059,492113,492293,492431,492619,492757,493049,493219,493291,493393,493607,493721,493777,493853,494093,494141,494567,494617,494737,494873,494903,494987,495149,495347,495361,495401,495457,495611,495617,495749,495799,495893,495947,495959,496079,496303,496399,496477,496681,496913,497351,497479,497579,497663,497969,498053,498073,498227,498403,498439,498791,498947,499129,499253,499403,499621,499669,499711,499729,500009,500069,500153,500483,500713,500741,500839,500909,500921,500977,501029,501103,501229,501317,501383,501503,501691,501829,501947,502429,502553,502669,503003,503039,503213,503287,503599,503707,503771,504139,504187,504209,504359,504607,504683,504817,504857,504937,505027,505159,505327,505409,505481,505513,505537,505657,505811,505823,506119,506329,506351,506381,506449,506683,506899,507049,507077,507163,507313,507461,507883,507971,508229,508367,508513,508531,508583,508693,508789,508931,509071,509101,509149,509359,509581,509863,509879,510031,510077,510179,510379,510481,510583,510767,510919,511111,511171,511297,511387,511453,511487,511519,511843,511891,511963,512093,512249,512311,512333,512429,512521,512657,512711,512797,512921,513169,513479,513683,513697,513761,513937,514201,514621,514639,514711,514873,515111,515227,515311,515401,515519,515563,515639,515741,515839,515951,516053,516169,516349,516407,516563,516619,516673,516973,517073,517189,517211,517343,517403,517459,517901,517927,518179,518239,518387,518447,518597,518737,518767,518933,519089,519257,519373,519457,519683,519863,519889,520021,520067,520411,520571,520747,520969,521179,521309,521519,521659,521791,521869,522073,522239,522553,522689,522829,522919,523333,523417,523433,523553,524309,524387,524411,524497,524633,524873,524983,525143,525199,525491,525571,525719,525949,526231,526271,526637,526667,526681,526831,526913,527057,527069,527123,527291,527381,527599,527623,527789,527897,528191,528487,528611,528659,529043,529121,529343,529393,529421,529513,529519,529579,529687,530333,530531,530773,530807,531121,531359,531581,531673,531841,531857,531919,531997,532187,532249,532313,532537,532603,532663,532687,532811,533003,533063,533227,533413,533453,533711,533831,533927,533971,534019,534043,534407,534607,534661,534851,535033,535061,535133,535333,535727,535849,535939,535973,535999,536057,536111,536147,536279,536933,537001,537157,537287,537331,537403,537877,538303,538357,538751,538823,538927,538987,539093,539219,539339,539351,539449,539533,539641,539839,540139,540203,540587,540619,540677,540779,540877,541007,541087,541181,541523,541543,541693,541711,541831,542081,542183,542323,542587,542603,542713,542873,542951,543143,543233,543497,543551,543659,543841,543967,544031,544133,544451,544549,544723,544879,545057,545131,545189,545329,545527,545551,545843,545917,546391,546583,546739,546881,547387,547399,547487,547513,547583,547609,547871,548189,548213,548351,548417,548843,549013,549163,549203,549481,549553,549607,549739,549911,549943,550073,550177,550213,550267,550519,550703,550843,551017,551129,551347,551443,551539,552047,552179,552263,552353,552677,552793,552887,553067,553099,553249,553513,553529,553627,553789,554051,554179,554447,554597,554663,554707,554837,554893,555043,555487,555707,555827,555941,556021,556181,556639,556691,556697,556741,556793,556859,556999,557093,557269,557521,557591,558287,558413,558457,558499,558643,558781,558913,559357,559459,559679,559703,559841,560017,560179,560207,560239,560293,560683,560771,560863,560897,561161,561343,561359,561389,561667,561997,562181,562291,562537,562651,562669,562711,562987,563041,563051,563357,563467,563663,563743,564149,564359,564463,564923,564959,565013,565069,565177,565333,565387,565511,565597,565727,565793,565979,566393,566537,566617,566681,566911,566947,567059,567383,567569,567659,567689,567779,567947,568153,568171,568207,568273,568453,568783,568831,569077,569117,569197,569323,569417,569839,569869,569939,569983,570079,570091,570413,570497,570539,570659,570827,570959,571201,571397,571759,572207,572269,572497,572777,572879,572939,572963,573409,573481,573739,573829,573871,573941,574051,574157,574181,574201,574393,574741,575053,575219,575441,575623,575857,575963,576049,576161,576203,576287,576377,576469,576701,576881,576889,577063,577307,577363,577397,577601,577781,577807,577937,578077,578353,578719,578803,578839,578923,579017,579133,579259,579311,579497,579653,579737,579893,580033,580187,580339,580549,580631,580733,580891,580927,580969,581239,581447,581473,581617,581657,581699,581947,582011,582017,582511,582551,582727,582773,582931,582949,583069,583291,583391,583523,583673,583859,584183,584357,584411,584627,584707,584791,584869,584999,585043,585119,585199,585721,585757,585847,586067,586403,586471,586609,586841,586951,586973,587087,587417,587473,587633,587737,587789,587849,588121,588383,588493,588649,588827,588949,589219,589387,589439,589783,589829,590027,590263,590389,590641,590771,590809,590839,591193,591403,591601,591743,591827,591847,591937,592027,592099,592429,592469,592547,592609,592639,592919,593029,593227,593261,593491,593573,593627,594023,594047,594203,594359,594401,594421,595073,595087,595267,595319,595363,595453,595687,595709,595807,595963,596081,596179,596243,596257,596611,596741,596767,596863,596899,597053,597137,597407,597889,597997,598303,598501,598541,598721,598799,598933,599087,599143,599191,599281,599429,599611,599759,600073,600203,600283,600311,600319,600517,600823,600949,600961,601037,601241,601297,601313,601397,601451,601687,602081,602143,602321,602341,602597,602713,603011,603023,603131,603523,603557,603569,603853,603881,604013,604057,604223,604349,604397,604651,604753,604801,604957,605021,605249,605593,605629,605641,605809,605921,605947,606049,606607,606721,606839,607003,607067,607127,607363,607471,607517,607721,607933,608123,608357,608459,608483,608591,608701,609047,609101,609113,609253,609313,609373,609509,609599,609751,609907,610217,610289,610523,610829,610843,610891,611033,611069,611111,611333,611839,611879,611951,612149,612173,612317,612511,612611,612637,612823,612929,613097,613177,613243,613367,613463,613499,613577,613607,613817,613889,613993,614267,614683,614849,614917,614983,615427,615437,615557,615749,615773,616073,616169,616243,616307,616393,616589,616669,616829,616897,616951,617237,617311,617363,617647,617801,617819,618349,618437,618587,618841,618997,619027,619111,619139,619603,619681,619739,619753,619813,620233,620441,620507,620759,620911,621241,621451,621721,621893,622091,622151,622187,622351,622793,622997,623057,623279,623351,623477,623617,623771,623839,624007,624199,624251,624521,624601,624763,624787,625057,625109,625199,625637,625831,625883,626051,626113,626239,626761,627083,627091,627139,627349,627433,627619,627953,628021,628049,628093,628267,628447,628673,628681,628861,628939,629281,629351,629611,629873,629989,630023,630101,630127,630299,630613,630967,631121,631171,631187,631271,631339,631409,631453,631531,631679,631843,631889,631903,631987,632189,632273,632329,632363,632627,632777,632971,633187,633253,633401,633467,633583,633653,633937,634003,634159,634267,634471,634523,634573,634679,634927,635003,635039,635389,635639,635659,635909,636017,636073,636283,636407,636421,636569,636773,636851,636997,637003,637327,637409,637499,637573,637751,637933,638081,638453,638467,638567,638819,639091,639263,639337,639677,639713,639907,639937,640049,640303,640621,640687,640957,641057,641197,641413,641453,641471,641549,641761,642011,642199,642403,642457,642547,642701,642977,643009,643099,643303,643457,644009,644047,644107,644191,644297,644359,644843,645049,645091,645581,645713,645851,645907,646103,646259,646271,646411,646543,646619,646669,646837,646879,647161,647401,647453,647557,647891,647963,648191,648257,648379,648391,648629,648689,648803,648997,649093,649283,649483,649739,649787,649813,650099,650483,650537,650827,650863,650933,651109,651139,651293,651641,651809,651857,651913,652019,652087,652237,652417,652453,652609,652957,652999,653321,653501,653617,653623,653659,653761,653927,653963,654089,654307,654343,654529,654623,654671,654839,654967,655013,655387,655439,655517,655913,655943,656141,656153,656389,656561,656737,656771,657121,657233,657473,657499,657809,657929,657973,658111,658309,658349,658507,658873,659173,659231,659531,659783,659831,660053,660299,660337,660377,660557,660563,660617,660719,660787,660811,660893,661091,661103,661459,661621,661741,661993,662021,662203,662551,662771,662819,662899,662999,663283,663371,663569,663797,663893,663961,664141,664243,664289,664381,664421,664619,664669,664693,664879,665051,665131,665503,665569,665677,665803,665843,666167,666403,666527,666821,666937,667103,667379,667531,667577,667753,667903,667987,668159,668471,668747,669247,669451,669611,669701,669839,670031,670139,670199,670279,670493,670669,670739,670811,670897,671219,671249,671303,671357,671443,671471,671717,671791,671903,672103,672349,672443,672493,672577,672787,672817,673063,673073,673121,673291,673339,673459,673513,673549,673793,674071,674159,674231,674249,674501,674761,674831,674879,675263,675319,675457,675551,675863,676051,676111,676219,676339,676493,676943,676981,677227,677473,677627,677681,678157,678253,678299,678563,678637,678749,678901,678971,679039,679279,679373,679519,679879,679891,679951,679981,680129,680209,680489,680567,680657,680857,681089,681311,681409,681809,681899,681977,682001,682037,682207,682337,682427,682547,683129,683453,683699,683713,683747,683777,683819,683873,684191,684311,684557,684727,685063,685081,685319,685459,685697,685939,686029,686267,686437,686513,686989,687073,687277,687331,687433,687443,687551,687581,687679,687961,688003,688063,688133,688249,688397,688451,688661,688733,688763,688957,689341,689699,689789,689851,689917,689963,690059,690089,690139,690269,690397,690449,690533,690889,691183,691297,691343,691363,691661,691721,691739,691763,691931,692161,692401,692521,692591,692689,693103,693137,693353,693691,693739,693809,693877,693943,694091,694273,694357,694549,694829,694873,694997,695239,695327,695347,695689,695719,695867,696079,696119,696181,696607,696743,697019,697379,697457,697579,697643,697757,697909,698111,698339,698417,698491,698641,698903,699007,699073,699089,699211,699367,699379,699449,699557,699709,699761,699791,699967,700331,700627,700703,700751,700897,701179,701227,701531,701593,701671,701819,701957,702173,702283,702313,702503,702551,702683,702913,703039,703139,703211,703489,703531,703631,703709,703789,704009,704161,704321,704579,704593,704657,704783,704801,704897,704933,705011,705137,705259,705389,705461,705827,705883,705949,706009,706487,706547,706631,706757,706921,706987,707153,707279,707437,707653,707789,707869,707923,707957,708091,708221,708287,708457,708479,708593,708913,708937,709211,709337,709447,709589,709607,709741,709799,709927,710371,710383,710561,710573,710849,710903,710987,711041,711163,711427,711617,711959,712121,712427,712489,712603,712939,712961,713311,713347,713491,713747,713833,713939,714551,714577,714751,714797,714943,715109,715229,715313,715489,715549,715621,715727,715789,715849,715969,716383,716459,716531,716581,716621,716731,716809,717103,717229,717341,717449,717533,717883,718171,718187,718423,718493,718807,718871,719197,719239,719503,719773,719959,720019,720193,720253,720319,720373,720481,720571,720913,721013,721043,721213,721387,721481,721529,721733,721783,722063,722119,722167,722291,722321,722377,722539,722581,722669,722791,723127,723559,723601,723761,723923,724309,724403,724441,724519,724631,724643,724781,724901,724991,725119,725321,725327,725447,725479,725867,725929,726331,726641,726701,726809,727021,727123,727201,727483,727499,727673,727877,728303,728381,728647,728729,728813,728867,728953,729203,729301,729403,729587,729649,729749,729977,729991,730669,731413,731567,731603,731683,731713,731741,731831,732041,732133,732323,732449,732631,732817,732877,733097,733111,733237,733273,733321,733619,733651,733823,733871,733963,734021,734189,734389,734443,734537,734567,734819,734933,735067,735143,735331,735461,735649,735659,735809,735829,735997,736051,736093,736381,736471,736699,737411,737507,737617,737687,737719,737843,737929,738107,738197,738301,738383,738509,738539,738877,738917,738953,739027,739183,739217,739253,739511,739649,739751,740099,740359,740429,740521,740687,741121,741193,741253,741373,741409,741683,741827,741859,741941,741973,742253,742333,742499,742681,742757,742991,743047,743129,743297,743447,743693,743791,743933,744371,744791,745027,745141,745699,745753,746101,746171,746309,746483,746749,746939,746969,747199,747319,747377,747839,747889,747979,748003,748199,748211,748271,748541,748613,748691,748807,748921,749011,749051,749557,749729,749803,750157,750209,750229,750487,750749,750797,751139,751277,751321,751367,751549,751763,751901,752093,752281,752483,752701,752803,752881,753439,753499,753659,753793,753847,754043,754627,754811,754907,754939,754991,755077,755173,755267,755387,755399,755551,755567,755813,756011,756227,756443,756593,756667,756703,757063,757151,757171,757307,757381,757553,757811,757993,758453,758599,758819,758837,758969,758987,759167,759193,759229,759301,759503,759569,759653,759727,760273,760367,760607,760649,760847,760939,761009,761429,761489,761779,761897,762049,762241,762257,762529,763073,763267,763391,763621,763753,764003,764081,764171,764683,764717,764837,764887,765041,765103,765251,765283,765577,765649,765773,766079,766333,766393,766421,766553,766637,766739,766901,766943,767089,767443,767513,767551,767633,767677,768013,768241,768329,768359,768503,768589,768643,768773,768857,768953,769081,769159,769273,769357,769579,769751,769871,769963,770191,770281,770597,771019,771079,771359,771437,771637,771781,771917,772349,772591,772663,772909,773057,773147,773317,773363,773447,773497,773657,773767,773837,774107,774173,774233,774313,774577,774679,774919,775193,775363,775393,775513,775573,775603,776003,776221,776249,776449,776507,776563,776693,776887,777389,777731,777743,777787,777901,778081,778111,778391,778417,778819,779039,779327,779357,779873,779983,780049,780163,780223,780421,780499,780613,780931,781003,781127,781307,781493,781607,781681,781801,781973,782083,782137,782191,782389,782489,782921,782983,783149,783473,783571,783707,783781,783877,784129,784351,784457,784687,784831,785159,785293,785347,785377,785731,785801,786053,786151,786173,786319,786803,786829,786949,786971,787043,787057,787601,787621,788009,788089,788167,788261,788429,788527,788659,788873,788927,789121,789589,789847,789857,790051,790451,790523,790897,790967,791201,791347,791377,791431,791657,791789,791899,791969,792061,792119,792257,792383,792413,792521,792641,792713,792751,793069,793129,793453,793511,793561,793733,793789,793889,794119,794173,794221,794389,794587,794923,795079,795097,795211,795233,795323,795349,795493,795649,795827,795871,795983,796139,796177,796391,796447,796531,796583,796687,796799,796871,796981,797039,797333,797539,797581,797743,797851,797911,797987,798151,798373,798397,798533,798641,798701,799333,799427,799489,799679,799991,800311,800539,800651,800693,800743,800971,801001,801379,801421,801631,801809,802103,802253,802709,802729,802777,802979,803251,803273,803629,803729,803867,803939,804371,804511,804553,804767,804823,804997,805073,805121,805589,805741,806009,806027,806447,806521,806783,806791,807217,807299,807463,807629,808267,808439,808597,808603,808751,808957,809063,809141,809213,809273,809359,809741,809749,809797,809917,810137,810353,810409,810809,811039,811273,811289,811469,811703,811763,812221,812267,812473,812527,812597,812717,812963,813203,813217,813283,813401,813613,813907,814237,814337,814447,814643,814699,814763,815029,815197,815291,815533,815663,815671,815851,815963,816037,816113,816223,816329,816653,816703,816743,816821,816857,817081,817169,817603,817837,817919,817951,818249,818327,818569,818821,818897,819253,819307,819449,819523,819691,819829,819943,820067,820117,820273,820399,820411,820793,821063,821377,821411,821647,821663,821753,821833,821897,821999,822197,822223,822293,822391,822571,822667,822763,822803,822989,823033,823169,823447,823553,823709,823721,823759,823829,823877,823913,824063,824077,824531,824753,824921,825131,825347,825397,825467,825491,825547,825647,825857,826051,826313,826603,826669,826681,826957,827023,827131,827429,827447,827599,828043,828131,828209,828371,828691,828721,828871,828923,829123,829187,829211,829687,829993,830131,830177,830279,830387,830789,831031,831503,831709,831799,832327,832373,832421,832597,832613,832709,832747,832837,833057,833219,833479,833747,833873,833933,834007,834433,834527,834643,834857,834949,834991,835117,835321,835553,835591,835811,835847,835957,836161,836317,836509,836683,837073,837307,837373,837521,837667,837847,837937,838091,838099,838349,838631,838711,838897,838993,839369,839483,839497,839621,839837,839903,839981,840451,840479,840611,840767,840839,840859,840989,841157,841213,841559,841879,842047,842147,842203,842321,842351,842473,842519,842887,843137,843257,843379,843397,843559,843613,843793,844001,844093,844117,844421,844429,844453,844463,844601,844777,845021,845179,845197,845381,845729,846217,846259,846359,846661,846949,847031,847129,847151,847271,847339,847367,847453,847621,847697,848087,848131,848251,848321,848417,848579,848707,848797,848851,848959,849131,849223,849391,849427,849593,849763,849857,850021,850147,850387,850853,851153,851261,851401,851549,851647,851801,851843,851881,851957,852179,852239,852301,852559,852613,852769,852871,853057,853217,853481,853733,853819,853949,854323,854353,854383,854431,854467,854729,854807,854921,855067,855199,855271,855697,855901,856073,856139,856301,856487,856693,856811,856831,857167,857273,857453,857581,858083,858103,858161,858241,858311,858527,858877,859091,859109,859577,859823,860087,860381,860599,860759,861191,861317,861391,861437,861761,861823,861881,861941,861977,862117,862171,862289,862409,862487,862553,862909,863087,863377,863671,863917,864013,864211,864323,864533,864583,864737,864947,864959,865159,865253,865321,865363,865643,865717,865757,865889,866197,866309,866329,866963,867173,867211,867319,867401,867413,867463,867547,867623,867743,868069,868271,868663,868783,868877,868957,869081,869131,869501,869587,869689,870161,870271,870403,870601,870691,870731,870889,871289,871337,871459,871553,871823,872017,872077,872159,872251,872269,872351,873079,873113,873427,873469,873979,874091,874117,874217,874373,874397,874721,874763,874847,875141,875239,875267,875327,875417,875519,875543,875617,875627,876103,876311,876817,877297,877771,877871,878083,878201,878299,878513,878837,878863,879167,879181,879247,879391,879797,879961,880027,880043,880091,880283,880421,880427,880687,880949,881099,881327,881351,881473,881743,882241,882313,882389,882433,882491,882631,882923,883109,883231,883279,883429,883703,883921,883991,884057,884077,884287,884309,884497,884593,884857,884951,884977,885169,885217,885263,885497,885553,885727,885791,885881,886097,886349,886453,886583,886619,886759,886859,887177,887533,887599,887629,887717,888161,888257,888389,888499,888637,888659,888931,888997,889027,889211,889289,889631,889727,889909,890221,890237,890437,890543,890821,890957,890969,891049,891239,891491,891557,891577,891817,892091,892169,892357,892709,892951,893111,893227,893671,893933,893989,894073,894137,894239,894391,894407,894547,894709,894893,895003,895009,895243,895357,895387,895469,895651,895757,895777,895889,895957,896003,896201,896381,896573,896947,897067,897241,897319,897703,897877,898069,898129,898189,898253,898319,898409,898663,898921,899291,899401,899617,899749,899791,899831,900157,900241,900587,900701,900737,900763,900863,900917,900973,901067,901141,901183,901489,901501,901679,901861,901907,901973,902089,902261,902333,902477,902719,902753,902807,902873,903197,903541,903691,903899,903919,904097,904181,904531,904601,904987,905161,905347,905497,905783,905909,906011,906043,906107,906197,906431,906701,906881,907063,907267,907297,907433,907657,907717,907793,907957,908041,908197,908221,908353,908491,908581,908669,908857,908927,909031,909239,909301,909437,909481,909577,909679,909899,910093,910201,910229,910421,910711,910781,911003,911023,911147,911161,911219,911657,911893,911957,911969,912049,912533,912797,912809,912851,912859,913183,913247,913483,913513,913639,913873,914239,914327,914597,914647,914813,914981,915157,915199,915737,915917,916273,916367,916411,916537,916771,916837,916913,917251,917503,917557,917641,917831,918319,918353,918433,918737,918779,918793,918959,919081,919111,919189,919337,919519,919621,919811,919913,919969,920107,920399,920441,920863,921143,921199,921737,921871,921889,922043,922081,922169,922289,922333,922391,922549,922639,922717,922973,923029,923129,923309,923347,923567,923711,923789,923869,924043,924073,924109,924403,924421,924659,924769,925117,925181,925271,925373,925937,926027,926659,926741,926971,927233,927497,927653,927743,928051,928099,928351,928471,928547,928621,928771,928859,929239,929293,929459,929693,929777,929953,930071,930113,930593,930689,930773,931087,931163,931267,931421,931639,931739,931837,931933,931949,932003,932341,932431,932521,932803,932917,932927,933061,933199,933313,933497,933607,933943,934001,934151,934343,934799,934853,935147,935167,935339,935423,935587,935651,935819,936029,936493,936527,936659,936769,936937,937373,937637,937667,937747,937991,938033,938279,938351,938591,938713,938761,939179,939359,939431,939611,939623,939737,939847,940003,940157,940201,940229,940297,940421,940573,940931,941209,941323,941429,941461,941599,941669,941741,942143,942187,942269,942509,942569,942583,942979,943003,943073,943343,943421,943499,943769,944003,944263,944309,944473,944533,944563,944857,944987,945143,945233,945457,945601,945787,945809,945941,946391,946861,946997,947183,947327,947369,947381,947483,947509,947743,947893,947917,948053,948151,948427,948847,948929,948973,949147,949391,949439,949523,949607,949759,949811,949931,949967,950227,950281,950357,950473,950689,951361,951373,951427,951589,951697,951791,952297,952379,952741,953039,953273,953497,953543,953567,953773,953969,954181,954209,954263,954323,954391,954599,954827,954991,955103,955267,955481,955769,955819,955937,956051,956143,956377,956521,956801,956843,956987,956999,957043,957361,957433,958057,958381,958501,958627,958687,958807,958877,958897,959099,959159,959339,959389,959477,959887,959953,960017,960137,960329,960521,960593,960931,960977,961033,961141,961183,961189,961399,961531,961661,961927,961991,962077,962197,962303,962413,962671,962837,963143,963323,963499,963877,964207,964261,964297,964661,964829,964883,964939,964969,965087,965117,965147,965483,965611,966233,966257,966373,966439,966499,966863,966913,967259,967363,967397,967451,968041,968117,968329,968479,968557,968641,968713,968731,969083,969167,969377,969763,969889,970231,970247,970421,970493,970787,970961,970969,971153,971429,971521,971693,971767,971863,972029,972079,972161,972373,972427,972443,972701,973001,973277,973333,973397,973789,974107,974137,974317,974411,974459,974707,974923,975089,975383,975433,975643,975731,975803,976091,976309,976477,976489,976561,976709,977149,977183,977323,977719,977813,977897,978181,978239,978403,978427,978839,979001,979189,979261,979333,979481,979553,980047,980197,980417,980503,981023,981067,981221,981419,981451,981707,981889,982063,982351,982381,982489,982589,982769,982783,982829,982843,982981,983179,983513,983579,983819,983951,984017,984127,984323,984383,984427,984931,984959,985151,985403,985703,985781,985799,985969,985979,986191,986239,986369,986477,986641,986729,986749,986819,986927,986981,987023,987193,987227,987593,987713,987803,988069,988157,988319,988643,988711,988733,988877,989099,989123,989251,989321,989411,989581,989647,989831,989959,990053,990293,990329,990487,990887,991009,991171,991217,991607,991663,992021,992111,992363,992633,992801,992863,993103,993211,993323,993541,993763,993851,993983,994247,994549,994811,994991,995009,995339,995381,995443,995539,995591,995737,995783,995957,996271,996323,996461,996739,997001,997057,997219,997307,997333,997427,997741,997811,998083,998617,998941,999043,999067,999521,999671,999809,999979
11 ,1000001};
12     int n,k;
13     while(cin>>n)
14     {
15         if(n>1000000)
16         continue;
17         for(int i=0;i<7703;i++)
18         {
19             if(n<data[i+1]&&data[i]<=n)
20             {
21                 k=i;break;
22             }
23         }
24         cout<<data[k]<<endl;
25     }
26 
27     return 0;
28 }
View Code

素数筛选法优化后的代码:

 1 #include <iostream>
 2 #include <cstring>
 3 #include <algorithm>
 4 using namespace std;
 5 int su[80000],flag[1000000]={1,1};
 6 int data[10000];
 7 int main()
 8 {
 9     int su_num=0,k;
10     for(int i=2;i<1000000;i++)
11     {
12         if(!flag[i])
13         su[su_num++]=i;
14         for(int j=0;j<su_num&&i*su[j]<1000000;j++)
15         {
16             flag[i*su[j]]=1;
17             if(!(i%su[j]))
18             break;
19         }
20     }
21     data[0]=-1;
22     k=1;
23     for(int i=0;i<su_num;i++)
24     {
25         if(flag[i+1]==0)
26         data[k++]=su[i];
27     }
28     data[k]=1000001;
29     int n,add;
30     while(cin>>n)
31     {
32         add=upper_bound(data,data+k,n)-data;
33         cout<<data[add-1]<<endl;
34     }
35     return 0;
36 }
View Code

3.仍然是一个dp问题

http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=15302

这是一个简单的问题,但是我却犯了一个不该出现的错误。要引以为戒啊!!!!

 1 #include <iostream>
 2 #include <cstring>
 3 #include <cmath>
 4 using namespace std;
 5 int data[100005];
 6 int inp[100005];
 7 int main()
 8 {
 9     int n,max_;
10     while(cin>>n)
11     {
12         memset(inp,0,sizeof(inp));
13         for(int i=0;i<n;i++)
14         {
15             max_=0;
16             cin>>data[i];
17             for(int j=0;j<=i;j++)
18             if(data[i]>data[j])
19             max_=max(inp[j],max_);//要去最大值的,不该不该
20             inp[i]=max_+1;
21         }
22         max_=0;
23         for(int i=0;i<n;i++)
24         //cout<<inp[i]<<endl;
25         if(max_<inp[i])
26         max_=inp[i];
27         cout<<max_<<endl;
28     }
29     return 0;
30 }
View Code

4.一个出错的dp问题

http://acm.hdu.edu.cn/showproblem.php?pid=1003

虽然刚开始的确是我的代码有问题,但是不可否认的是这个题的描述也存在着一定的问题。

http://acm.hdu.edu.cn/forum/read.php?tid=7205&keyword=1003

依旧附上我的代码:


 1 #include <iostream>
 2 #include <stdio.h>
 3 using namespace std;
 4 
 5 int main()
 6 {
 7     int data[100005],dp[100005];
 8     int t,n,max_,right,left;
 9     while(cin>>t)
10     {
11         for(int k=1;k<=t;k++)
12         {
13             if(k>1)
14             cout<<endl;
15             cin>>n;
16             for(int i=0;i<n;i++)
17             cin>>data[i];
18             dp[0]=data[0];
19             for(int i=1;i<n;i++)
20             {
21                 if(dp[i-1]<0)
22                 dp[i]=data[i];
23                 else
24                 dp[i]=dp[i-1]+data[i];
25             }
26             max_=-999999999;
27             for(int i=0;i<n;i++)
28             if(max_<=dp[i])
29             {max_=dp[i];right=i;}
30             if(max_<0)
31             left=right;
32             else
33             {
34                 for(int i=right;i>=0;i--)
35                 if(dp[i]>=0)
36                 left=i;
37                 else
38                 break;
39             }
40             printf("Case %d:\n",k);
41             printf("%d %d %d\n",max_,left+1,right+1);
42         }
43     }
44     return 0;
45 }
View Code

老师课件上的代码:

 1 #include <iostream>
 2 #include <cstring>
 3 using namespace std;
 4 int data[100005];
 5 int inp[100005];
 6 int main()
 7 {
 8     int n,m,num=0,pq;
 9     cin>>n;
10     pq=n;
11     while(n--)
12     {
13         num++;
14         memset(data,0,sizeof(data));
15         memset(inp,0,sizeof(inp));
16         cin>>m;
17         for(int i=1;i<=m;i++)
18          cin>>data[i];
19         inp[1]=data[1];//第1个数的DP值就是自己本身
20         for(int i=2;i<=m;i++)
21         {
22             if (inp[i-1]>=0)//上一个的DP值为正数,就相加
23             {
24                 inp[i]=data[i]+inp[i-1];
25             }
26             else
27             {
28                 inp[i]=data[i];//上一个的DP值为负数,就重新开始
29             }
30         }
31               int max1=-10000,s=0,e=1;
32         for(int i=1;i<=m;i++) //找出DP的最大值
33         if (inp[i]>max1) {max1=inp[i];e=i;}
34         for(int k=e-1;k>=1;k--) //找出开始位置
35         {
36             if (inp[k]<0) { s=k;break;}
37         }
38         cout<<"Case "<<num<<":"<<endl;
39         cout<<inp[e]<<" "<<s+1<<" "<<e<<endl;
40         if (num<pq) cout<<endl;//处理空行
41     }
42     return 0;
43 }
View Code

5.一个不知道哪里出错的贪心问题

http://acm.hdu.edu.cn/showproblem.php?pid=1050

这个题我在杭电交了两次完全正确,但是同样的代码在:

http://acm.nefu.edu.cn/JudgeOnline/problemShow.php?problem_id=88

却总是WA,至今不知道为什么

杭电的两个正确的代码:

 1 #include <iostream>
 2 #include <algorithm>
 3 using namespace std;
 4 struct sa
 5 {
 6     int st;
 7     int en;
 8     int flag;
 9 }data[405];
10 int cmp(const sa &a,const sa &b)
11 {
12     if(a.st!=b.st)
13     return a.st<b.st;
14     else
15     return a.en<b.en;
16 }
17 int main()
18 {
19     int n,m,tmp,k;
20     while(cin>>n)
21     {
22         while(n--)
23         {
24             cin>>m;
25             for(int i=0;i<m;i++)
26             {
27                 cin>>data[i].st>>data[i].en;
28                 if(data[i].st>data[i].en)
29                 {
30                     tmp=data[i].st;
31                     data[i].st=data[i].en;
32                     data[i].en=tmp;
33                 }
34                 data[i].flag=0;
35             }
36             sort(data,data+m,cmp);
37             k=0;
38             for(int i=0;i<m;i++)
39             {
40                 if(data[i].flag==1)
41                 continue;
42                 k++;data[i].flag=1;tmp=i;
43                 for(int j=i+1;j<m;j++)
44                 {
45                     if (!data[j].flag && data[j].st>=data[tmp].en && !(data[j].st%2==0&&(data[j].st-1==data[tmp].en)))
46                     {data[j].flag=1;tmp=j;}
47 
48                 }
49             }
50             cout<<k*10<<endl;
51         }
52     }
53     return 0;
54 }
View Code
 1 #include<iostream>
 2 #include <algorithm>
 3 #include <cstring>
 4 #include <stdio.h>
 5 #include <math.h>
 6 using namespace std;
 7 int room1[500],room2[500],data[500];
 8 int main()
 9 {
10     int n,m,tmp;
11     while(cin>>n)
12     {
13         while(n--)
14         {
15             memset(data,0,sizeof(data));
16             cin>>m;
17             for(int i=0;i<m;i++)
18             {
19                 cin>>room1[i]>>room2[i];
20                 if(room1[i]>room2[i])
21                 {
22                     tmp=room1[i];
23                     room1[i]=room2[i];
24                     room2[i]=tmp;
25                 }
26                 if(room1[i]%2==0)
27                 room1[i]=room1[i]/2;
28                 else
29                 room1[i]=(room1[i]+1)/2;
30                 if(room2[i]%2==0)
31                 room2[i]=room2[i]/2;
32                 else
33                 room2[i]=(room2[i]+1)/2;
34                 for(int k=room1[i];k<=room2[i];k++)
35                 data[k]++;
36             }
37             sort(data,data+451);
38             cout<<10*data[450]<<endl;
39         }
40     }
41     return 0;
42 }
View Code

找同学要的能在我们学校oj网通过的代码:

 1 #include <iostream>
 2 #include <algorithm>
 3 using namespace std;
 4 struct sa{
 5            int start;
 6            int end;
 7            int flag;
 8            }data[501];
 9 int cmp( const sa &a,const sa &b)
10 {
11  if (a.start!=b.start)
12  return (a.start) < (b.start);
13  else
14  return (a.end)<(b.end);
15 }
16 
17 int main()
18 {
19     int t,n,count,tmp;
20        cin>>t;
21        while(t--)
22       {
23         cin>>n;
24         for(int i=0;i<n;i++)
25         {
26           cin>>data[i].start;
27           cin>>data[i].end;
28           if (data[i].start>data[i].end)//下面防止输入 30 20这种情况,就          //是大的在前面
29           {tmp=data[i].start;data[i].start=data[i].end;data[i].end=tmp;  }
30           data[i].flag=0;//没被用过
31         }
32         sort(data,data+n,cmp);
33         count=0;
34         for(int j=0;j<n;j++)
35         {
36            if (data[j].flag==1) continue;
37            count++; tmp=j;data[j].flag=1;
38            for(int k=j+1;k<n;k++)
39               {
40                if (!data[k].flag && data[k].start>=data[tmp].end && !(data[k].start%2==0&&(data[k].start-1==data[tmp].end)))
41                   {data[k].flag=1;tmp=k;}
42                   /*if(data[k].flag==0&&data[k].start>=data[tmp].end&&
43                            !(data[k].start%2==0&&data[k].start-1==data[tmp].end))
44                            {data[k].flag=1;tmp=k;}*/
45               }
46 
47          }
48          cout<<count*10<<endl;
49        }
50 
51 
52 
53     //cout << "Hello world!" << endl;
54     return 0;
55 }
View Code

 

 

总结:

      一段时间的做题感觉对于dp和贪心有了点入门的感觉,多多少少有了点自己的想法,就是改错的时候比较难熬。不过,还是要鼓励一下自己的,加油!!!加油!!!相信自己能行的!!!

 
posted @ 2016-04-28 20:58  Wally的博客  阅读(1026)  评论(0编辑  收藏  举报