2018年省赛蓝桥杯JavaB组
第一题:第几天
2000年的1月1日,是那一年的第1天。
那么,2000年的5月4日,是那一年的第几天?
注意:需要提交的是一个整数,不要填写任何多余内容。
解法:
2000年为闰年,2月29天
31+29+31+30+4=125
1 package javaB_2018; 2 3 import java.util.Scanner; 4 5 /** 6 * @author zsh 7 * @company wlgzs 8 * @create 2019-03-23 8:09 9 * @Describe 10 * 标题:第几天 11 * 12 * 2000年的1月1日,是那一年的第1天。 13 * 那么,2000年的5月4日,是那一年的第几天? 14 * 15 * 2000年为闰年,那么31+29+31+30+4=125 16 */ 17 public class Main1 { 18 public static void main(String[] args) { 19 Scanner scanner = new Scanner(System.in); 20 int year = scanner.nextInt(); 21 if(year%4==0&&year%100!=0||year%400==0){ 22 System.out.println(year+"是闰年"); 23 }else{ 24 System.out.println(year+"不是闰年"); 25 } 26 System.out.println(31+29+31+30+4); 27 } 28 }
第二题:方格计数
如图p1.png所示,在二维平面上有无数个1x1的小方格。
我们以某个小方格的一个顶点为圆心画一个半径为1000的圆。
你能计算出这个圆里有多少个完整的小方格吗?
1 package javaB_2018; 2 3 import hashMap.Main; 4 5 /** 6 * @author zsh 7 * @company wlgzs 8 * @create 2019-03-23 8:27 9 * @Describe 标题:方格计数 10 * 11 * 如图p1.png所示,在二维平面上有无数个1x1的小方格。 12 * 13 * 14 * 我们以某个小方格的一个顶点为圆心画一个半径为1000的圆。 15 * 你能计算出这个圆里有多少个完整的小方格吗? 16 * 17 * 思路:看第一象限,格子左上角到圆心的举例小于半径 18 */ 19 public class Main2 { 20 public static void main(String[] args) { 21 int count = 0; 22 int r = 1000; 23 for (int x = 1; x < r; x++) { 24 for (int y = 1; y < r; y++) { 25 if (Math.pow(x,2)+Math.pow(y,2) <= Math.pow(r,2)){ 26 count++; 27 } 28 } 29 } 30 System.out.println(count*4); 31 } 32 }
运行结果为:3137548
第三题:复数幂
设i为虚数单位。对于任意正整数n,(2+3i)^n 的实部和虚部都是整数。
求 (2+3i)^123456 等于多少? 即(2+3i)的123456次幂,这个数字很大,要求精确表示。
答案写成 "实部±虚部i" 的形式,实部和虚部都是整数(不能用科学计数法表示),中间任何地方都不加空格,实部为正时前面不加正号。(2+3i)^2 写成: -5+12i,
(2+3i)^5 的写成: 122-597i
1 package javaB_2018; 2 3 import java.math.BigInteger; 4 5 /** 6 * @author zsh 7 * @company wlgzs 8 * @create 2019-03-23 8:46 9 * @Describe 标题:复数幂 10 * 11 * 设i为虚数单位。对于任意正整数n,(2+3i)^n 的实部和虚部都是整数。 12 * 求 (2+3i)^123456 等于多少? 即(2+3i)的123456次幂,这个数字很大,要求精确表示。 13 * 14 * 答案写成 "实部±虚部i" 的形式,实部和虚部都是整数(不能用科学计数法表示),中间任何地方都不加空格,实部为正时前面不加正号。(2+3i)^2 写成: -5+12i, 15 * (2+3i)^5 的写成: 122-597i 16 */ 17 public class Main3 { 18 public static void main(String[] args) { 19 BigInteger a = new BigInteger("2"); 20 BigInteger b = new BigInteger("3"); 21 BigInteger a1 = new BigInteger("2"); 22 BigInteger b1 = new BigInteger("3"); 23 for (int i = 1; i < 123456; i++) { 24 //temp = 2*a - 3*b 25 BigInteger temp = a.multiply(a1).subtract(b.multiply(b1)); 26 b = a.multiply(a1).add(b.multiply(b1)); 27 a = temp; 28 } 29 System.out.println(a+"+"+b+"i"); 30 } 31 }
运行结果:
-29570580748664467772949510155197171114779123754551925181541832355303328892684041017452796646524817709102422711310774939207188928573314237691894533651331105807870332226881339652900000722208806882868263899479454741933101038391309330549671864044395617169633939516543409793836099508942499289074838641370198420666851208556741796230822039620421087479414875758136385792825555200670179972613507364508005946560743612058082728881206038529172031287699278660678463713922856889046023784955670284162621099776437157491746496002259281635887903584612828446065014804042671045936361775161103245382107511697328983618372857288412043552346220820245539112410066268224397385860401929198590949100924369857851856739756198376240886315373718082227298700159675070074921127494202375279702033451616224030472854051245200689897711312096040904655638214363249046723702104491362522717310931815130726210057836245586751612440261441782062233935110706082257783453631566488047118431538142228075074297737229942419318851741876553183738173646570428739863636371626710625472757094592585341284449147952220960646650786260025042356620789194761118623176145600406655475207097007760776429011491797687070309641460423531084164737575408793639223877246533078828406438040687058385780585505082579991785692923674685592194636140459333009601094522462609989580512525251992274157025562250443453322703792877906067603023073242949576181813664721540205034252109713021824410639873482280572789238366984710286512581680061606793527991860804411360607461303100236413057762055902068816840055981484911633320769214607051390409900605867071536484363876214815883397946154546822131904656591656922919650228198774601153186565168865666358533066364370723442333037313562999672871887146078673326624059916440367698919213403264948306357741094291113595894611309375026021332956008710707048138656134488405271099859962796817021418445251969574679668329639251657139311929510848987406149506526290097084013485955119197028021955652690359493728803596620793494676270314234468099336964568868486101102021470471080254876447541730139858727356708237178746249298883692938833889387757466977887411540361210969393221276321040198203577235691635900216612091879343839575513634361417668288321624959429556161513216623067836594549428660082708776386670896286636684836813331919834350167796811506222273520965617663868175537980281634104501985770710915709114042149040328510857798286048541692664084738110504723809454158881969085661817246878259685406656104652908015730506779741011254265245448176891671091149191013443692748283835546980934990756472092339555685788011641641353638853735629437551471691794425298702636256637369293873255657500283879705496587786307999630330090329414605748139328087217926639160352037524554147915658428496050268548153300973155750337643002179513885468770565392472748988065511086680635200821828870780451622646594887742389102190911933914382451168434415534304394578505881312940095335749694459993571834438056488082512533545691576399654364658912382763196946142591562659591341339486969172588501028237427950575365655300698639731803401518218011022709980703195480531798005687346242334778259173323933032691363409639221954347433317974652104778605832536408772464708769522414352554682585536815744572049575392815414715777981586179886636552455856084097863744388834627298631533748495227341773833708120836853821973847417490613885090104235345071088237248986474521807615791330696813365175228667649214366179696118188529657904602934843240987645736258282288817895268886732405197591570791486169748994049050815404442112687802916168376824995115126587474147849780360417674466153756879955233573898164136176281537848336606583172060044873992796350413321026581970517209316520492821959407392180900334174870642851025361130731596394020576454740070605132692646078886431629982878636750310281851528809556151776614845394194806883955082499529259561501234743329408879473565346751187234550595146785945182852849828684483299439498573668811060511260633598500658381665488407245919188824968348266916968886226889276311729525070992104266994924762776129835421258008579973745926084543322856698843331166462474477346377045596588881094685909958309720364248418816169411177125709209021359261763719985538686233399935211297959110702634260991415518175446256424590480494591186323455586739549732543569456893162884277499846657807706406423865519970434455084412023417240469027918771263151916967974703277691663745652079729650395362513501465811268660258396920932460606541559664085470554432232243967225955820514142898852752144353779752667638939807266606657258067677422176023416525809761271437224792156622190050147118054003062179264470169522627525308915094820730447793188549733257900609437648605224943982778018115082132125649547235837093506781919926399669048796049775192553468874616153734620180502044012769232698048449530604566879087354203263920788881348082960805291229601680281553682864082788891141298425234741451230930260034534018963022182718279420420868195989582169115881846891722728551730462249954743904837679070996878139204206611870058739959502653089510767366705185123347557299638558533910648986608481678259260466179045393768526176199694827567898191731084973173355617283187021274260431155557068109167595517615587724278718727041225951448794216317486539374652667514302233833557988670246437295654343882698418819826745056265507789982205859188827546799319013035851602522850145289101349619464312113473497330132766761886016567965469565733014529617589509397102136019827094883077830557433313780769476018875480563050900112062292802159276265546842423600218020998445473560982734143785257365440595905693820106820535448621132916991515510365827736364766684851593476368335665910045394685360684551931658296570463611229005393026728177671720715831491691026095582717640861036371181747399123945941087007212281246654583497695421651271331815920513668752994381739136110545292917443643830969622947017604640056105268405409641174550530483815268960833867095294597351638786431396311916195390163529924805098683629013912815343891007792122021062130460968688040696929933478082029875979124764426796749050372702567752233152610161247911484304053048743692577335117401906659440513681804372854687143077350344987559518693740356683393820431764455018633611933570511700258228589541196583336784687724228329546129332861473494921541284042088724962618491503157348371705600312670733907389538434677638242999327847635469540474959669583841942291227639521118971783911518829471504691015251260171818503483828485790593174110684223711664723996049128321592385936311964027423624839757157370866408987207082350927262571204858318734528945498228016268597182689750420343498197359607430669272070595085043946394883593577843770805796731701212892092970463722962780378539593154296358445759995928192437542802632908381113605450603755519902224899046486385006683183438017302631100823665575783421645815467359500676084994529257795930406264689025115239425295103817480681611513245900600556677194925468233619618736048128638526025385234937265801862858731230482210418699278633603510928389541377250591731027837741236980385618810487279457361023366211062180781489588809924171343176872698666036098229408571962448370975634197453633910991309809807815746940609735666826535838513858583755522347730792294069626337151923227893614534020620955254658782828507379949611123590944920877585525682599333364787243639114435996544195048014976176994598024733600941259242479514258255497393614499589081467881535315872997787065288287900725831695608372348156642994862046530128511914197944046757798574506200466581106500369345107955100259914186262379653154094558879867013018246074377346617078720847688313815195931716330907038360663364161345540163289452782070064258034481047788094124660883388172910906422568431585192077393218457700436720299727516991851519294707259270142500218706841987182006022938182805417266783110749945378404449687248932693138735324124599493124000803777891607128454771977992835895395765221761781007736717430260094408197550794478857835748459581668378135076030432213994074461666247743925465237635132154178681019198109442685908084952285151496088860192437676229924221549000681230604617914352020917434398210689756563670168096507424988123263594817014078162323555518313780806127344891601163820953444731096294356088197896756568739041857525761441940627325715077888700413300554327502429290164093620406354981991420653478315982328727089737070195897517201140076605027033856356465561069868156702128125152026687306741941681443523011300771472398163309432592364843234319746166550134401304860188192688837947881585122825707738642099251711953062724799056959395382489633362513461633789654792313294634900154710492047574543921916299017217419888699655104614976986957713738927791518022962585576798664211798867899988669165501686032542355098629020019534480285862795522432111803293305075278995481504277151361930736242504979347477150113845066769731097882964687201732969608576845218781354956887494926678687233874314632053698766140525492299444933844634855691874103611599902972686649498653655016406582157304281729295925352031441491580980828693815310998530965825045876539081694488038224995085381229728293731573459607913470648518140964046655087866050962850813068073769045652075792431003138622732249904206770165138070013087499519932113334287554352391792065375375255925328090417573886475284686453996883647484320390729822528507493753948103201560721116369818064156674938406771871129050154768717633490671757058738084973464496261485614897471028634864245828506978938166714293566957437815253300469828705213762820918599513152733304622674156359404286040694188994230770012888299605665896287976294463322673332094338376574623821477941756343799609203229614011323900133097502884542060148331039643103280068255590381518622995633640985149498170696175518136263383750804996950901635243194042678905006257582124046139393563983161297006211308142808770770624605501754225347147940080072390976794550888573283823292651616441030775621551246914279472060292472581431358487157184705109429778748199876566205736176686935540370526618743241589715924911500613258620141135267878224166080561954612656944083342259720812613549113302498080235418194111065612757289447641675498987292617684786511646791927911704104809347880550463476216092606448260043650161790524564457517253807414481932934047294937974120639554168568867357281481583500237623509775030176305195780845608109345668777996828133795605218213061026898651580908576113970370915543142754337289857189060720364320270287871302355027873976520060455318465750581540016522642711707491923791920228211166174417820049864286268574727551670983513302397806256153490073476439932091509462448383339301100569689452492412658748433529619192001544797258101947583695596720389134378882286222587943311895152697169880630654197700366435637919633838315772078947086952803816853866201212883909818190217441281161822888805277760650589695594141998117427760396794388651032645250158917477017223327744833123531936467317918084110939981956906726450455554514370355711798203868049052839233417765326488313411987621344326274565857537551703521955411257278758537115623854661942893278471670673379739475410704375245261384068641348547783641290868317149314191551096311613866009375089894682963675532059754998166198948453537611275729117011624290930390815127871410253284297405151555278271575235502120442503747814212870756758308454806338147176585184780687338421345512002024109043492909583851141437559324094483433404113783421297329975954488042506993711975814904811325416228132129251104737424874243428803960490243463307339746871635028049947138018531132428718702427025907964914889443324035631275240856012627540494041557497670833056941913807982586867828200058812996392075335445197125877187853818756497432218979359170707730648081656197425614298874681204640492152240052925034432269705743708098480574274509581521048041546466002188307354961658766188879704564746633418873062101632823195148820779239780038537269417536278530234082905112582971999702170276660174487345378331136112487750597729642648116457312322739682309955675847904205146897798726309120090986344818922764086003691290122125505059831453108598400237912355029942295095489969576352288556890480435507005385230486667999836185185064466282827862070543415693708030615650161867001586973195988271283465806850550594598990031709111038868532672308258460909581717717442591776078881319837696836212321785196995403778356494246626874197441155917147434868100560830241325616148676207810106031079293902159113347515660929438104475256675507904385043222333716074363072093108504617820076580213114689528113238704426902328084765271668304275868116276145243117172307626105763250935013985909226779838090644132413810436938111629155836386956713461558407638903323636756462752457588602999525225998191075019093877535381647869950882089499076636008118434898621788953501776121766322441543386164549255462618316530474292719900872068796586383121707450792147182145608249860955475277127124357822757213069837874240181136256994467387933873532545761178570042615639696069783540221745602346067345032053716246472686783050663709229044086327308943152726120996330669939553873746646379048127788856179185318889460946905992520911926979062939772985969122119409687274256248936604667992089171896664436836079627466232012658117786281813923124572014183126168647255739322071406861502409743128625191211023537936241907462763533684310735207687868131165467079094268778215501483585754371349573594064780841599497328148988108110901418502157893603017771697928156528008364483595993852180678982361678908717707286032466284877854554484783502867875771865499197032461372993824025111426044912911322145051915392412516805284153687866951543764278603738790356857182239205784959189537038792747785699355762386123011799552994036865974499807458231465234867017704309722642448470971966445396215428244689380658857614464191530455124763168685512833291174807605871417368344383019526681105185749978028254146114079094045730285996223660171855852834617821537202568092326611817137997443642355058080405541910514052971839799999895384435817189576892544376762976500843113644363601965299953795582556832061197037459898560889393977370715305033241069623987348816258281165832763502507750242187837486021006318151034430024046987587096848127004977691550875728368843612299550198263551691144980747375045913213642142748375110873856024485425262737054632385539980193556903255284299989576368217066139193964070039473964270862205224580267670158920042855185473747216170064720283607474864693093429897352205284788661041658776605284537581259617660757735964574869432315216189899080362946725226689418876291279034749982019208424761787195045885909215666868157981669266871044516251064038387608522256267987390571256898071737384586112902971916529581164312932938629257618048904512242391659589639765554985187431722027725217114573491534671292395683911144826632518152560570202507126505336277873288949479289755053153626368108050987036824240959911059964712528535234399220335250434854151154846087149832838222832151576089123138991088966992374207030318909649665230294606389142601672037317778257655162486082191203804632676531275902326683600812704913861199836486414037056454903875304930392155163150751866743868137308281501884169486168368404434914289488463127024785706510463811700079972070710524108626953446935864097282448829419355539332538364494447085996097653930173085705341941328917070399536745496101047419469197547121886098443945539135449230453980033144211793410920521422301595165043281725382611612147879960857433862985882813751305084597614301900694234642459587019790932027882791721518123462390408226570760960761864287478708027365988616900040726244343348571438024685617444733323594152610370924604015921619329100104061055759414935711729660985098840433251344164968332265934445214926986321607493002949201109290195463266647801501124966448170788463239451521435049548618469360679369393674133704553115222877334599941547050575210290222161612325476593693171144135108629667056984493254386744810751186150114834063433111544950472590262560735434977161267450219020083479285337577545860288768093574776218783949369051022535035772158248149389896230738054371316142857219901564712393366505106595931728421898853299004792832010796545121271540537394836850031031028884223786148083514269437451241714021145254567918678164172295385747158179535472253807591390368421485592589368778428301775698006267415975817903941182283350924602537096477132595589270442973568571022756523672971484707034189509626185838870484826386331351136874296977858302306895279600831178756275383394093125115234115080213073549354044867561899496252593260763943056652069598734281237410976722343245732259105220109046887403813286549388908224991991763724165511282603707945443030834852307796716697483092820661162553576139987962640545027754422596554855701485716644756506991282006282780240329343129455815590074091694894362943636021517471992809783276077646464437021015085593362192576339667115340520583782712788434947331931520116039338237680507595080240099928013181056416730009498792798380294138420768762157471805571244660827567904773895950577486041646119461016906077780355139614429487314048512415855419003720273482638179379302909853526681092523351944900913627271812710838862529877374506669453137606152933576469224334957543418507637890345421420885657310849922645333246818939253707725084436839677072484615666131196468468340906523684418746050423045311008898760747106438842399345551532225257630327608789215935605336922048020777748824424505078936226856946204039459939263421669666088669634713712412693601034545799084008716917557878640148545989971186229069805575261273538756474919563909533556439722559500380719195255937208324265337053146823213303136422682274482786485747997643476236686659231887070018894341914127022738380643943756128629476457983837405236232354785127274038010594240951365840861148790077265718421369551819183029018971503814115813123928182743101992810431116202219444170958278422319966832746337218881084527054845692863793068657914062476613362420944285233440872002808337635106750402180983214304761961795510630193680850170599783786445229331405223058093729006203573927004753522240271182268707413223525407606040462398947032333776143325650465184111701530436423456027916225144159562376530988550065483283701692265247109892694769365796633266911346652074130338576335856694945634640900923341326309897511622154816970627488879102669909662119588246914200839503545734758837861053484491765992042534097925311691444042306842734150798099042463764543969189620725776455522127715382892194489753508891056686437123149884899228108645569930267319803011130383206179790781946247530525263107054245719694852009876425563621274446838339136953566616579994720932776448555595185334657259316422483885700270989851543074227404632498022804145622939520626598378932266822369472065452668447033633068486775954680035998578172033309681687847948936074093781382828491070755174552955474113959197380286672900984506594323280746443642965608190124373078566918366097397962402789939590531288371965850914638320342510317820272214346895068374715748965108667083787410280842596856255125624424839972021413380118988424207421421154426582036963497636428133747502323363805990342602983285725401640861186902299877176895114454112043175457446463024939969113995377184870855869241956536693449356773632531808559553746298883189122533906853200995721505289182064138228850139904273219173339613743994002008467682209904440145673555750009354897445596791455092171558878441257789141407709212766796678707318905011221368482167645724611804633023512287887735956040267720179175573364233719394082401386628220131701002822513998829001039144736496098407500633437116817848981598258760279016175463554218039329882991101897138424395895380597795778076634894898346908407928922182444220747131365772344016784150415098246248551957670042821367282767579450544846476536677967749858040507466628763765523442763227418699638056408956691430142260106841726697162395429240347711104713787804334889072445407068508042835235127998166516682576864153378445098709585233733973162017563249813722280665464580372106343604056511029653083697383108868354528747486129432995327838761582107421952314856252099851480770356894708122592385783625972368189086529517400848338866145730347773958450079515214175878631099612659735843857277338995679399488490239504448208306332923685619083780682271897454045296119336928848288969519202544746430109812937873498969701647531194790640577698531097037075142115206338828150813869949023552720333815816929191609124201640096300534162059998624938149997736883617282650692975679081207389000776967861789160362250852747668518205783045335285096544530531020144890956851131849837335176338442351934860448544863897116708912649826422302325214040242649837929496490823871702955744249186938128164410953300938545175123209962837773183092197307940308378345660221776303298618356329996348447677204316685005322907236529717115629278457635960974526998116245008653464672065398884429942932126718019964149751470763432755553056049480498017798770200089567985294697610321607178376478111530214757329258672752168313078207036867350284505179903910469822888417827906577552775032673739285987213159951889272160210790839156016875899914649484221711165873758966492704613335513574067800586660147843043045353909473296755112164061019262308661893225851877184043825875995397080175877721509085464387797823339435478502076457579203452610791119302618496486998039537920901972895960345235021432239461209340369000576245598233265907702195588131327518699439399425958730313298914657133766536597104766739309151980041395935459728125676950418777305644047912153863892921878936111067964412840400393094974557088426238906168649400691557246148047672958494641506767994602203552525330629658378134039067730289787989521288872705368039018968492804198451146118097721793001487054631865884205880292631660872741314907282327212832752162123261268317639120642627120352490905381402438832365162687777959233160148089830065064844639078949319836900575523629815511687531660917517601638947438573363535543256595423911849483773127396034461476933167557998396420885021186674283477918400908822303733434183971462536016540589747210494293721610848353749982232788439097389126017282428523343420957424430068189325212880012060162315249758573120803368506502137458064835864148350447254909302528752497346690034444697376364621990491724566649255151038716621287992225111167599557476779677522690200398360735363424694866408547682352781142050912689736250405018663702894097728364159116742679764683466003417493324767351772287853220854477407872470722213670275907609024071245224629889041045337131736132192260400181667383629742428559688399504186037567485272493296653090400584654532343934594092405852288154411521014366494106608250394236363147632184880191717766756266270775684947517813606345778807180243359931868002971668871398131061703381021573013695898278407845891730239896546145480698391036907070071645092169036759201360945987983496444806211866128845986126653919964019223072059812222164523413097917254228270544481652503852679646816384990495077844464339503098757395075169299588293230698872093079596964845987937750120185639734929504011996178315365894194294744387513372271341061457725163700758336900134164680314118630417798511807863094854789450287096941745057155498464200960268915844884268520453579377005384603070857594799992494892583228738432114994704131032377143707115290477562448744425790697694000179794182141530185954301093942384026358004593719290546684829763276171027733874248489310893201453020893668950740790868192459416664639161936100608433388452918252839337619992417059167829639198167226546749948309060445814872573782990496827506823645466114462444489603528885967929618434675343607622935148065583296425692314709441416768427819812814021830760635162625448001272909651808766796680664580861251520369437881945341096330687028357016316912119203033364727053432495631969036018377509721028578805703593212664672910602722354173428828243814173422760675439674195821218739428070683288731146253257199239721585848322677796093091571205282321124318790284774079960864643921708219287379215487723222195177927510964580894872177917426159717268529213636319231427136689088874311679508363586309684883239421005354003827228652705202028740607759314664265968240367557638923593680501157198427265933634634527736864240368142079749639427347498451780865417888874844846392569293645490688795863096678835310894128111483072745427058336072849014081472385073651786269316695111531529652398809783996785569706549688147289527248172686637094098185381433674037561137904430623471232918523646527055527083775399574003102456663820148833594206545322836749855308255360218760388844109319098720368618596543949176338776550638915619626710639403530765103688346095027150770275530861818254963311957234711516208742384382767134232982056056020130135995557701731495654216378520166278068802324053129522772978266261380298586654102234833096639786998136994177575053483600846890446553139958555108757484228023152234601454219621155652390736856821671442510867317410132365383289217396358351450245557185909953031695962121526590792501214241253963904155063068946134791024023924776571116355441931649338225420829017234364646172572098849802425356680998328443077595504114788225278695022747640134666647926749269661940888558669807105332383300111260205529937829790788232139098274113048043232267951763009797905260510799881114525441065298088837110475322842364360834089382239059854827071670709566224224255071738859727806326430030539668948451840569276604165853301250164854192825921353211135839678499299151147491230056777107114523595966215683329503691194560500246626420003881488002422038695412330796121785332531877405254072559730555736866075748333779940481552574317378423039666216889671453083069483491011915772604682941054101861823809276604954019977148277403088257760687103836883724409417856826645356047920240885198580765561471878616632667774668858233783994409936890408536996603997119835262247758658251498996020034860770557195500832463820892156889998365079595782560964740713297672867177464504315417088572594009887129805844550177472864113639178150577999543057573772893341359280477683012144413318850633435757630783884267449387483427207397663154913855303411373890426912262383343199674539553534223243720379705561048272693136995560733245306273403467523874663005540570446886959658896918359923659211478563976031554466137154102392362289773263237746187371412546438186319375863711770832880004736815735054349386665122964635743714692406178228522149167328567025435778800961489598831537629451780740731405442339521476640758425818247773199441975280825301332062908508747516838910051557016875584383447597830956277623442312001636396032263506627432982393134250251691159206559619541644832278175854251416182627185077389568176730683135192934665822800322930675583453913938286655682052150550622445534575498825429697972129618738867674639833203769666445933009709874497913531779602895662700730998821376006205092572567254433492285131629922469743273557128608799014142355874343698432258136069342872837271517858246699331917636982061449167911391626201006332410159083390910582582436767397768983405618699535983088379717077006804520465791503331750381084240429558867925573951939958223705126467877441964617091206798040185858860983864421358503538846984243249108893703988787056975032216238104949941676206279929924241468716662500806108376863944518613296596642207192551573079596446049722184649515971677780061834655007556913064310102257002396206555514207077113757095601729847265093328574803417956034880533108691031371202461066640838487652063129999322555126983578157981123656575741858159263526950768781164766600838358416145619795741309551129184172240139765079944587301756971373309338503854952180888577931484811767756311337802496573939013229142418696100235491653842998484625170152742325104169845857837319489582110025693673971163429155119680555781586560326743037871210323079153745472929070814533964989454963863057322739019663231929372882113337777099354310739114710986289737935439728166309356787713341401412678897243584009296642637779659836629158469793523726400881488584069363799720677706689356667910483900752633024473268956015793036006607873657279225483731797665593609416997451101077813981330705760081104537967893354857279927885218935872178949763634627489912863308356181775905403937604538563860900231672739732326870209267112882789691091336067395934807955403929350219770710428083053701534934688844534429505121915519512860375539271444523924583428277563872711720673945847778962473608710643923578725919566520779969354574108784853461514085530710064148450475592140151597448125150977606908245624803496927569794958243938949540655367112114875186699010034934323236016168308452980102722435728274768301918074594403915754916039838798624663363493099881638932875570287870914651120174916934874250847848018096583622316868564142268629022052530324714409328518720106182867874357178292860958474512590909957494863116676353890439972320539203723879484145167590304789645832404445004372935537496806749662665078001978398785066387803654891832257075706403890852477197429988064001315178620770303582583974554313084502710507498414485304352705078381007757922166691608266154504304152261218097079036425470792014269482606440150665796853448815099359263890749253223375563691691763603924226446498762264834090196128402217006169473135865859259964659643864156579833439436916908969882016593438735421223211002679585084770449240321083100951711589980068471786858394674657318202108288995533972183287665735066494875240814188221042582843280730904424177353152730703604475223008091614197683737016583922867572975935389345453234720110354868696701596728565083949724616930385076398546296803477714089782613090179177836872425112671572044460878190642539394730420933140221767276901365516084051917165614875237916857050604065797862976451464880630434159275134013956532109096964989180219357517663446847759375679330001421244847483719864997221179011667229897702337725635898386666909202115484302751580988254122644169017142037145179459279758099670638675210632632466916521571933634176256009212329453353618698153968966708461423799645971323308679937478912539081278537291926342966519798941463908748695850851694413402827463253452889749706828596440301804801470390034954031799925407165127676482575175395147568907957659525659817481596762756808047924020613885596095818622774841844584703475572989461163170975797102543228540919300448419654274657046113116616019720586019019762524627754411939406430134363806225818310574252638065487557474668658701364108449102250239614800395948674986945087100001401643231055669439010312606530127273928768835761944651642171382062361134777807678608503327773135957201458568463429433032215620432110084579645943383682890266714555238103578305400281150640448347247314772065220475894807008779854976092309797568347208997333038248625557964391322040053719125350899040389251170753508920353573650005986085822515079083182345791671431374178485109719526966040617633780278602992657580433238104337834806124531536131034861544543865483599798787713654875277192201012089230564562441258684319276764820709116768992404650225530071492116354812637478202175342944680625979507869499626263159461771572113562997991065681084479004450218941011415284985495928562980389175654784598051275981486690121951134052977401056635505174724701828032624794267461725966051306454603262595156660902865228171892384577321440142669327571173681382314442008116529912018985671601174055966310651372087525688164869250657610045256448082538406890122035194331742418941422730910867680393611514816369261970439956024152124112402365274293746759140834469955834683082047319388551574528946972039327200025396750876853774750959168607547665003894117602368774415496301844966448616106401064912688374649734114895712107834310882030129404893665467027765438470529055969366086498809973922607619372239173585127931821658281085031211319693200345279751854009991643472210037398943150882793122552818727073256877878509421132789377738714769783061900166977132771126035855910248521314631291462850577725351188156134719098950055507944061499112938279501832881757056811419121132296743873388206888487774377107396023234208027393734027395242963811143775814352542998263959722527514783147869530723187308885631780603087066109115346662961642441261231714803739488143325790398745053769739537202508805006562022537574795409005478504084205106942522479502517474108071917755481700003327992096700987433218435667714144958488310081853624202371631709487916700401318395939568442443239386109247037600732450369026430955900670949723508322165507298917031421486176017682696360689410806706590987915766689020031927824238144644570682107709816663920116525228114044145797517947430303323255159506002962213459012477078843642753665394934675550073917378432861420122093324068678959630891988915562017702267158239259938816876264468726175182310537538736039248047997538046718086432564857413423810459915215361479990476746071799352075821618438165469817606682731598770384508853106396470924609081913284495950920733293684777998091066774849298869100057188986290885261426913195090549126204983621027512091865560674311147018512212372356642595687718534944860921564031813449704501696304790356966169065109502812631892213326519972422348356649992675475289651560138316766157030916473659426208116865115246393599670123283225216729801857340664790133276389026351852662162806443584354294078333822852734859059447447656652231218554455850647497703558751353247256742696392351734481173487005504996141469949491126330379675801670719860314139338991623406256203900506187037440495554600022529110021008705928143982477588936580366344551307409457449840176523302196989977921856215832678982614707087628633573062979025959874400488376672488208900165793309361141324687488816435444509557392416175994843524235596210571135843803348270020237190909625917115443841784254971261263205194022581533413774218385952706619394653595268330006441637781988436716460461413058984186735312950657726502197701336421607597602698098456392791383163275117362187268073456335745442344069400683024398635196666595825179867117277217702338985214524049618380598630051061522493683595832757995378304039233819396745374686850965929317200836463440526585049775636153350594226261973611844177147902095418991175262070096066668696276904344787086949752660040417350566718626210001980864507676452425342194808798039995356759483665122694028948770911292996980957656649947116945219289507653823442480225053955983940038565688272352040521718047044564417559135037742136948639403262118481767835519308244288051333135278117582427116597762572371804223742990242668236039085694098547728224145262562872496183349202470667478101819337181645972842692397943719215009774297873290727829430752245396849433492935434069260842943039735979022603208577838937210132311751953761546204436697950930793712371841695247659700675151126080303548813899486695177226809989936226063761116962805777524732637434472312391188428375441621999877875396121369972329065743077646786468668994756894655592780895022552092015413556791386926824431376304756236266417517461551997165983903877202199304664686028034209114433934185118154257731041975280368049875514734641844044980200111138345947960895241111809536841953179573552745096417060790744434413280000217323128578568839566902214427131030791123580836429042967077287864230058624851986971049471630062624511582406509253250611509271026603441417400489422215060494786671213311036935318520227873705774084872822527979492681140684794127996808212688057360416351240040416665883902321665801244812467355959526903439964172329015091827608678361334108782584095167320387414106690379422460999601571934533830167764575851083661231290726985504286279380680152242725173282446638385060787746184065800700591642442976735144182998465421213381914330932565060653476618656849420067727662094931928682423292909179115637779601435268499708293073061223287315848556553752938842660761071320262280420859100435164965064484578347183444851821564863787498551062562521333157964523992028624734224248771767854872272462194878624595381971834005561240380133554635739610557398872906679007959783224493842317934697224171680340352631282080499857964240316768298178142644635317981594600330012181985967765404950695349975574796804291341199140346721164859342229620577542667121215419631132848571631919807884781064639955053383285696290800741502953541758586362633130117290558745273827858163138761384514277787023796177062554429565769853188039363539704834980542683623660121462759016892218885798911774452622650686656051389740248018115803229424825600074952255757817419412497371555048531634292686317238636255292999627850191115546733319528781464270959070070727570205433161305909886912785218704331328751512676966929359523145182555013500819654160580281940937699407979517502035663494298069396934641880933809389683182817914729908820382622473771047290797806957128949205796005520352179985461448977945355697293951553750693932932856400446482669815391592195820710133867782454984091225423358895605396012506912457563873155240393785306276473627876883821293660642666365007591121412280408559427085137204013503198040093744279431463149045579558546058645149632335638127857745825013327465325264868885999622556732795418998359367471378331064674426829095743216129847362061836870371570990275591799223479713359142613781288639928564635116013355676217948249624370612969995912325899002693841326602187992480877120002619920106532177821938027778927304238842835148889344892945784903791222855072025502522958193452169026395943312809418739386806248295679725744312433596161126491049938413369437347567674266709402881257961313076792651043977588379123624585848544661513559489398229592190032791820300198735609515861503885147501493655912381518012464887225966159939367939552958030337602137501725888463975526025991644719938772338249379041762432493054486763997802604165262176026034688881445828519936801978174003919049383475888892991479023004701765338184759287177691742588192269062216754067000116896291861967683764991074979162956561900438427049430460895100090062859286935616758726443869152488137946716002225708984991180205358523477778869707916009891513775584802390069407932419059414030877127614367615973044626178616752288668005909184544373165546173584422251695567680096933856824061444847469167124872319868890380355029184706433029029908161359135171121348478056950859885606309394604562767143942240271696607404702126432208151683333090352067637506926656567860773841547798314171058332276600223946575973159328279723366766744913111191916153789747332853587213626263728581587133589835992942442895309841439532885330776507619791870713930826216433677258499570037123848725499325336302321471052017156412850454563048608596639492129801182891433727450025836516571622036885909254933358458477076649884853281518407410230254343041309385085768171360171517590891936794209761403956070043918642375398988940507615824371067469145655795413505888944045292182413676116136811146503911691562567712749300307712428547544939888600696347923697837678517766111508424678689403147757467900373981443174593904394178119197428744134643740415292109675865133836735093186477552537581698855365027200165829998965579876804720045518153706381567223602846062116905098490021914148685489613376883167717224630283351281590443801747678669388781013644817049377063205457061543240601144744241599346486296534471488466224122637915594878188283401702406189146101880316668726669731677451629053042567781917663497369309609262883576029292497214595218077001192024887241512149943586021839353540869642227862371307215016806399570168626146418005139597390195844149829731229772095306823803054726661289760038398599025831184611567556881000884713024354877130783959066402854154789844481817354733826876915766617947204295316235209511980030662034380622443622857058734854790802252503022985128974215091821862257243651762677246473368564095440309999852541302643947425960079694005608421736629158513972185143947702044752420963663473614037848727615332512155258062608404587783324123478036390396946891251635749867143341435772401322099798608521540668227936030288413225013471405883993859531980739238952529869422421514779902874822545777386405529830020827724924236696096812575435692904906356623796085160421325770800632465607731937138923652386729686677711290829688281217845563922394888188582984300364283537430192092046918154761177203514607451338668294897354910038060748450953528270749981828612397964740367156416170176385940621887392685340946738038896113382152464088584216192175460478035552049018283612299341811386327831330235764313494554076900212548245991969094965929991128192854034195305125187661623882055583672936923720547572084427458747053139058188693815763688704723285156660510931518046733154484362677983984378704162079601885592987294698411628195801087457605613598270509651157557025277168499348536592728862594887339432611650953669638746890185257848168886020678132449980277239980947001151487835651683682526691175635207339033481583595284089534633111393066373044299296066237312243145253136945303078198705579649884507117167849709133143542048984610041875001314815323720901807996501313600530861651743298567596291748877024376959897603556319697265261286187733336276755455587484689069777362594676420586929733459836546061331917763937740583020757784147168189907990806373061502230970500217052494195419120419534869159567004276105794059687712911540482332435586214200239384818587045343627355578741162477175275915621412472558801875989573130602797955777651483209901231396460090639328826457361484389104647445225941460727174158195223409971773329376640544633934250169479762484271211069935083696096650998857465336170595980361649030032763309825386371888574498087094579375260699841654064281987535017860193547300705233758090048118934161203810029351804661259895848807803162308885526534566539820878589241099851769427002524304879773374677842852131770622394396199373317420006080882355901554932892465009085285018668301169300601377791104409454251354326414030686230232723349035759445552863993889857692384455133266180905360396526734310869320033225845355903049169261664905764605004176627973895669606276912275175957536730011671976606855418119459923562189476281893717091922481355705949293585498656740505681417220999903515310610048835287413577441535852458094553834085694934732751235361871724203513644502961946049724604532574767757013741047886247439898711977742292011020183294014420176644238723953774424675686206980981313555741644064258036082518168949474435289150339611432033151349449851718626966420281563971774690871813842112184849084069353610879700543549598851705352570410047393599639964209271738102386283115302357456665503256190366348091570917651174722394381625307655419868803751065063357039543429280694828490782481243008571062741390422683536454101154777142847666984025416328987113889568562940584684827979637294021538004281979010285823264090530036103979131858969109176443964228487744531500997505030732319288283094427220126364199991317447681634281951598012976964516882947355813022248958563932747446564557749013662130382674990638554702596574047205450102790005799602341835252572245179942906482268460652334609853732102263640564402188222694528905073945286754244153638086400406115218729555580803325510026522169784130826709992170034791507648213002762746097487439742810134188572488764692571552745599699794849957424671517223285548584990674780331391485970819326127924369994667337719868688809519824357480407667346638143371871455580572529862448301277210444314369474660978231258727652541617558940456239456386938478313579660915065174079011156919315156558465475588525308272814581586845729783473350440085994751500217064242460801583241846894780134777129468377921544086223127870692552112970499729217120062653165366988007240182359917753391426563035500373635545814487776857940880170377892264184249829390029942189985029120450227818153464156882368195621134830449059633801206180047808508848518481352749466613018122238809623976814168226683181369708698982852374180289596171997179607322135095439732073231373870096226586708284815475875000941300310214490485974341662681832659715311058431703327194523333614294709246260334487530880556458804914517107585403818890223114160259467028870862486435110083084766169235665598810179153835722145884833186911745254343344872698421413509439667499569684405208947718260143402869327832802771547231889411147658103882484771773211511594468680682504328084145963316433196090937709517098641546276896907069305375039953352674208009257716041968472235395748759392263620738042769558876455964808786467151414281363443353092404787425044240994829829783116566295128398112547129366527286999983698332216225975350184317351655518502653499599972871601741345303851021034918456111759292027349664919616823695726640530660006669945033603828454054644297188620004745573718582580781858261731908793236992695392104522685301795354194180221034949494293332592658153405935114200493668747045392074785630006891252807432136167499333247167286218872940331723426899465260350592926483277965430792220534562023584898695559971677468448015109974071472366760662082287776452035512901068524840788375978075104862299422841258694957112932323751628106147771742017531513954976866579373262252827318943223194799613569842376353989532330962208820875106690283825362764685565121263490632932071903365675154895783338770652515755078990938242362941626423814700169426104504826358052059955043778129862024089624858796184449841769563873863098408952983758035439114946330109524470091592364481246941931850031332704770154359837054376306234971903911977378613619205540058995218972223845514915064911445425010948832350682536056362491533181209691616914402054409799700195058718818534608872714616972638150053655266739494647202948496156345054172405048037565652514567670399902393466874867195354280149221135659200787157050050977722428163778610918423442737336218955091798324051525400160001481940518330332756957425466742184080491496992718102964787225135276224020342805316792382061382401570267321417151914213173619730490509634723843781551694555732335987066402620823038903861746712069597711280307461736238663249269194585859463601736771952588012051544033938497929429383274593457043661872161557939427860879020988768602680284428945516138461474464183660228501845033476237864673938471358467903659977170360902742518647910196495826373846716843960424994943845859991611230857218646744512083922428279736089265999843743259860101492956719985033172742081489162853335845064621823286300007970978540425746263437264937207675160081450258709962188206324749789695054578522473374755320362401686332746082533607822004610041283883654486011264253452957041852748380852355727197219883957039148636902184839021224109545137713920090016009393264563464331575739967604935739794285994447823524154035006447963138381528906009281231509695083478542760546694327761891537208251464685068502845729710815902072054880828820045577765116743285096222364761268360899559452819132151590768142009308450033891211838942846032914359431547009660513725143418082430336875634398017218992648904589633571660723855139959377712453539803731828276215028252762755760125608142855944490397235091009428416947303026811947663333687350936773276990406736277194673414813000288829596891002387390482534590329805534329578271817409654106748981796455142355385252965809899058628785653889056671240600963741498761239344402603119604210356961408111405561741450989583168741728097514614325323434854784583242291550824925346517251298314737360425132526124865893149187408222963113252181027271038337639405195215999475893663247298241495182396924327063431585035816916795088617779758485962100799989073347829305720829822197674398967135518533858203667616426915933520956853761394820121828665098900802090889485254097796288113850484122840448055616579689353063848033431505765790805382613526906285863439930225801693806132006711472189265971433343820698371513742392577876503857119805237248938559739704695276724870219629637864127818049486602286862543517198651425102301618301342373341228773204022753232885872214732097858313729018490182763476127481735516597360109655099392150239942528233400181565181643457655921084765605657987713731879035862786793728989827516686585789858735121544607027753109135256128437382677425536984908296964952470638123564445622524408986903287047189748001062488046098673077235233421370631542889333610128736788637484485153550472305303988224486805339863048608082242119350349121357035846433672744446714431622204359105862762321005175790788144583101816238075700872792099022444901953917245021999842429699588080784174084889158489599132340373284574820468924038201710816610544157054226374252794570870692572863582680737930068002476834605720685163352498710402392032089540904307278095856796656320007951604369975134876811902943484660290058006326323520726331920687237428208438728421524496420726835128312152820918870541230913019906303011911761543147192132866375795679181294167601152291978459705114510136645891404084132412617442971609174693319938628846668085473553055719367338640273953113182561410252362576862587134590987947821384999678518532174270074941555148366576993761655266002101405466874165979411680103828234947889794818424374971007491506878314225787001363897236532121139849957256804720372892346809678534530718222500367119378328991682550822133001898713118074438717873627172540077750597393358256642446639950826969746902733676856917743039307568709434457070664907527329426582636140163882420549205731964529831744504935517261113077506531005507234204022841118463125448540223358770913913479513016127887349004669701105452721376209458708313080325005525070992198520137974617662440836979767524373515396774356698797142678362860551414138905082046493426699646325889367720954208929753595951797560407618023666412437542070696210354547269095249096741748869911959465024873540946468240955671808884619904104891138432962754939750521135360425437792327627985534335393462401724649435832938818225242800803736503911428693928464935532367013913246404759319419223743942164470426620032543182861043386371834880333422226788601889424735689485586701125850991569382754972907559015071010558843347847317333868952680019711317040758487476737909949675529031218454389892377375022651772546833175162525778224295227190819352152518864954890387339833710685672342507784530589846286894306236426212710635071108721703199559716210108174437021951758456330378054758046681803406988974277752202902237558969368707038963017000941310523451681508056603194767720237193812592278436538686248258073271729130210338167941662749120085003419818117733094232010304443498829521480859524466959677132236162392812801794065322911108395899275269637654590596357913456195468289692177241328193546693932406844473851956800317159500350552810524911185181702183863103431647858323378877978780529889369406244585875172347990905381406786234372199933519186734629360267083550728024895994805767196085879532129452368280644538868223671566811899625797196583109313201921133202860840724488449475991454073237411414873400500710595969906814423199218743070150550720322568798466508677368851890102584036397577701528727141004957967930520615185625792049953927890652102208263783614855443544350081303293430721075499596680681525840952451542138014435111789327235067626300702007181786248445483150421571261737197990766674766230567641180611070418836823769967034422943619861513412082156950691034245485212655483180476224032851186558267697551517860066198260906959725376265092607247526274541254121165672369332772688165964091214111457921450300783957547160671685235663726035975009051568494683602967830516666697583682496408712531880688016166610847060198299293092517104125745479317357674227336292670683526895110207378994483943144022807014647606732318361276084095470584270606251821397302071492887230660472326933439877922998253869891800857327900007073008853137749159198592210873450449979000215527168767229698252595016124184672178862374460875689153489238488581642640215010137603075994888727842961156007200876538258423615015804103371511401558804117832216077579675942508525512345517610678925275644609022767014412578606773800116550382236874173161477596656041200512080550055752731869806078145300515582818399437931521331085316986597745179415817661718675505982263040056786938474615894579838406021395759211843126945580422785328711532677046312022614532816794582638020941711636292109871666680242575829899793722156928548000405654634442206718309575955206171974177125031605993350063861323739194235845408564606926079547434590257597760980804755767840383901299356966029148527211134889114497567811642559748448196215530340606192988874480037897614807615884199704636435456034882731993001538115056833700961386241203994460370888997143025376979413362505019312899095705385162546471754301056930706502557941582676302158248107521733000419638066579979561248369483776281751014178575456946368149972787474858415123454873668679003315252105483464529915274377088633478498972926692820684301939892729296647733080700047645292340045425692343316005244619093779590205966658266396290146852701973250358940382209628430394349819700581793478699517751631783598517454674766493188073581239677133954980045279928913483365606419016176827088262061946005787199483806313828753562678696132150228957175831913083802440198270725200243234694247246132260159250102783853943305229331878357837095392309755797033127009914372841889349400830180484488568610762192286869454133470947756645855786805073666022026882562365376024173662079858291927118495432377562406424882508449706238458186672993011601070632816528490864065563758664316603566002298873751808052009216909245737645793256960323440510275994953874910792816156230654056347849516463243692823796258556383152711483995835587817606933490504193767244226702978443658567089104988940162815481885058706174020365504802862853833261812689594157206891687559428065742637168189796792311256514492913775263082143908958004118328420312549787937020160937050298729296509747905816437507129324384396693031051324734152416578809582897016913018435853748929200048001115583075918408952875285883662156510322040647302597864850396699611978313067038206931162854845052789720216225059177729292568225555545303119069892578909953918557352877704927301733083679747329904492473816211736300419889852794308499731951589155734301544522468608557513615724674045623355824088729516393426325485710079569060232643760040215295191773925423931573891188828143247992248761718768761545281352744451063958498602234549195417523523203090961835234138996488096717842597902522904373220056828353809839300581009962027210688123578853697790358922039051142625721876505787165405420139412777809519222529774163813111807665194616715928186369117135969111057405832161051300654079368291776653050444398875514970089084122551572942432617267101998532634236024048430194091381073996749219351887189010166957571181352984444630120213641332977809294401773989572725727242403028749725354007192291392393164034065055932987730034756199114114659047461080470918596105426662799631674013595901827077242197185790191213028371389445862401757796792866908557355396937757737951589992533372904837829051054360104316681690135267002823430769416740303220116069752010223394083548421658368849839765489084551339246096553733636715743139630731132529177866547201530671926788445952537850848011130227595403756595736680349198723642801141274246087166204311600935825460521633435289138456020494108375556551706641824329740928527904717732920974827842203184541640438421731604996770201807003148667266305699192525172228503471189411611361946663495720675625625504942623411691403282783416936498559331985221689269439522196631009180675342325104856767434634573914973661770627950325954785597425810156647581839054128026122959854589400379237325811867937141589370214954899628514633487587159081100943386083194074640947252739420156466028244636103515913735930916403622298936076654159695779862286463060550501657230713529554054106984463513651861209794387121985490609771022518927712432725449005609051322493573462486375949838999321095706711083466001209538935098598449076491358268049521100360928087072545875582361911802167578664644165938262246904081398409230257415239221675401263586433519502282285415698361430567761483976827447673143444748853238427718203501819429617266603341855834870882605192172528654253013733457248683247143617503890412445625798868518985778996887995109066668092896742506039301387631182829649012087767647850363835829295594121299320340657567456188311743592636621156879330685007191313976561889110745649506120907617896348017241668226138644844637814626630210009901081420101347504897828536819057463082437818868124833314714333379497237391510845405212030504851154902633852914309665556458497648672905257183873510566517268272575863403627299640342036867369707025849912766054534923557924402418713035332208588537307804569761733137456138527571515152729431108718181940617658453949995842824430990531356155414781922355495902657072028325799414841368234736064020365303664255339649743331765179239404900208002728420539783672343116997823071510358727477174002579800763409258223112440117552101914057355305901884097759297876747796422636897430154837100992840937236323199877610140237539807459032800415477846726266578178958989679860404945068168502602910363627295365973035020760408086288056974551847494153919743510838215437226862540244911334528471938867906344562207938495465999197365625130207065071553558085465515180266225074359067184879014455989684394901655912825298343828655183623944696192738767790031497037405066033192594078524832760013533682701878052073412234242787617688265601594560702734028812297913845285469418385190667113722922058718689686094285772304097349758617296486375622210118577627753192421560371967361365274654012738778865936062067664549423298969752736702282959411504505444377724481452983120049421832233607490954946696891237738598770400022063179175833476573768952478391291273942941769594807957505793352253596724634174791931560675961130823940525120734008668361612434306892413061567972236836817427539634245269423479507830466995319346865693007621757196127394644469234679455098078416502448568077374658735161607137103093945103108233465313158570503868193811314689976619635659762354851211367624919504492826619357865569476851833544779190739313916979204607692953391707889007909349828708059614359319663874550966781473259295050626816476811263654547787167031090897420036416458980045421056123727931253615999382389957393173820224885028730484459547308591264484392224503858484362203075820673054322573822041214592026009659969742055421165855221999024584708058201685608317618968472339494649831115094319314732744685475820911643054728808795000094559499719354020207956022748566470668813917478134562586707863804397623988040478977662804071886868620980010677445731570989869628702745460873288925875601776969315139674026981371112311160865832866841961037004884994742266725212865100733291673840840074498403158681104218342152870003708663745046928001271982578752245187957860254157433131998721706311298487292468365377849551504382824899262056509647891304265882525404065752190565648938820542566311219404313564702626545030229088728865999622573576573108897864966638333297212299530618617407746717320274909145679027845495649441637761093361281465604724691421775973760152119158811296332673100386159895961628125576058708838117592175009142362715637796363326878958672358973693986285006699610354830535338291041094103624655620842847764124568132903558081690925066213444648558813680324975770393571573157016562613078868576463199004768185949976200298691383858248905629542766514670456363303029898402101762640412441616106921377987512026134453353095037606916988396113248717885188389938605318840684872181657003565580838565628055392727329840749654074150578146467630692714276308022236069993805280496371701048221708887838915505450406106916792818138223160605698319905458951051811042857229700271183150756066093952690283674219106003791624661678546562230436233933946195742903848143039974841828634016294081330137841301486285447565529588405294870930121325629346959319262904650928033324800688895660792268748770785121175681214562875952124869059496491065072650658873301904357624465596867115392917700545265915078816103197618899319702936346272724040987999463553897036633435195718711581172009128813923538860370898918952089470090635905476558199102128048421558606524668740994213754626403753467089280449790229845409764051097359917472868869648377152193379619811869926953349697278258229198069523705900510567059655392586162882927414130293585539190913502615869025732111215381728088988667120899839011984798085625390326878978906314641622875382845071532995404059398948149914274034392285288468329275340183188616045133273490958025874187667443454346903892590484297146203321430005195965008588666167502728655013640320171263223942455208825074729769555598763067786935604851126797153045662879352554245098150781685508382602462956866249886816085024841546042250379525268986423722455502883979871259931793866596569529183558136424186492589031403573716979767019081769051941011500662288123882692997918392848377669785368063240196657056587315053165665325678413191419128555735938324321297190409856758043955526937165042270254453420626493488020400748455173913767025705765270672952157166914578836995772307419138084595333561196167930402727330806458361362301902990906928551990787193033607951902519082725949367538726374621761680646504875568041221962041986020078603771722171396429240430626146065003546760974472104341595253696364984500785403234579569168469440194487915705087448057547366149567263545134430298515646574569296232921800691028037884427677380026529281542703745380755343155077853998034284174455070265275811877416603699404293851516112137072928381271714818176057969056722102844903420170331407981251652161220762396103167007249684656551150768468879120301236894537801269719614996704031995105731371136533057854885239636970789631578222962188611723488341672623482281847327820645053198703638216861168091339539218531943700386933051410346240792492467423692201594515384949154685799813464920041459736048046618606964426000353719567321191965572681228651350823099425915706175435656497077101872451456087112305849456546426067026659231183090836426744414110593387953720355626939545263140078719497115608323824418501925731733465656500921638283952791838354460399312962585825170723225949294905471545594232437795467381352791516382637992032954838075281278887123090574515278709452736337462785386423782150323157356459378648039563265706086368737902871054264522216906152525391044603598169818190999695880481345264574853309930742945626855783656199027358413414388628394374635222870997220739914780159768951013799518672220586003278309392339664155575651825151719704720969022417172329446046995169075272681339066793055190371109556923112039586524963567148568351192783095422924081458334915151674591008225304977232772091614597778731153453856349463043352363102760136459923220835670591780760044420645330381794438672375633266403750260915069732784079073814189909364611981330888766798978692606626734191397967266255799899343732730226726376418999821336330331196469243417719329699747623031436671401202006815887806284095651894382191577342244125352757608202845742520135511496638227498925483199123306913832742866238811511710122303795227286517586716822295614130792859892812024531980332630672318381342541826243147741165677240463387460040644283877376755320235421248035389688345656354655888681027564891538032273579640375567964812135610447506569093611485231411466762023294097688965158556476124522873353090831252514581676175439060760730507896684646115530592156860111265858815410740492818554675086071484879081934944043363955626164707173782548743342384270792968743944196534398907257876492039691533048427559423196321000302037649135192200533580845355890172207242701951108026183625877349662046608865087635885681002706007480481748341218496270628835533548290625527795420673644886081884094879814489903130364927112175175940904472982866537243731512262810039473460110033094204416603654475766846334339035035714494540235590188264554678550494639344885451263337842485071074353515893201713805659259728833512920438976236389310965308051050804641614148024794208715552742822494127087897780745578478598765744857936218220775493802443481385042094041577016592002471848441295822117641577731152707080361632595796457888938850380244356634115995999844913051541822507341156579023293176243178552504916223744685364534330405180188800139219740947907710224680825347240073231175279546134564279809467304067173881413318818207124691509868550689532949953427689666860118486926456216544752997444173250506761046844722016516327353968624690063049139538098865309279243328699741397388369122204567935445202263649044725354411837926397407771258392331934944506233351154999587248027411764680951141238591686590476129542961776607269019721395054410506064458175553577962324844805621330573861838072351900506763303512969056548809776264715597303645989509169508986056028610950123616141549777164970699804428221532478535801774834898580013652661407732901017614876656546946597504359855852797366403518610203078763789120958198880076915133343616712362131166910845636773273421324948400173118733181042273032780581556901443892401268923730686931497694558661941260101221923173896107055974251871907723367169711864010867049362210436779112555592521495904654084612617754462947366014724575663373342725774699095039056176417419124069904764888218842170456143531857096492391396315986983420545332261577632250276044743668215482997381611608873247448373876814632802629549100397182162072275213262519671268961221407151095064630016529435996126803324091912109406505455707121660577623185810400095103163291027313870898236355059862782528491446542209656300252157991329507710937158417850166418952726855444693333326847672482474074878972231649753941874356058465584082971310132281609653961412186239024295660573306504043850515862740854848405361921951417079908565181300924465439721153014412512477897351139297749921690759254546451508243918842394479078818584759473872665023318096718677355337171509764367322729850783204792434817481996177615639711667056729738779974871437154525825280267214593427370225051449232911165388514545241038902213081666019010982556157679086950686197873855328277163933029242454650060113884062832705010875947319635657024412457097191095368378118936363956504137888032744317064656587968062112787609520610058343138656652901574377444538648279185704989847137015611228066365783304186456763538705753140017563826571209421051790220581998531680939335976031653335135324855003220062175128571065262324429544348255479538609723046201868355786296026599356334922872263729985420250915542891830416436921896598184737984156700319404083135688837151705788049324435343522592362190876078243972018105724562001217973158591273487538926599831212740940019652315301822718141226508827601218299918143985567346042602604658283796551481316401855462827206136593158354165117142044332005518181681926650276766826529638899393831313577271667466754583985907653470034657706598068463529963961441303589602069286665815059386227518468559851917949085650804695047513000171780427569767216678606361440816469705008288917260574238432257385044398758779403707808472549392509886510258910620188841953983554686146585825217628018636162994347142040534969593966951869864283154732226886592289777567344050424172781055100272609931495024053960022186945035054784235769361117943019257941358004443469909363188597148799721353030700904997458927098629366264934121626769597770550980208597354939586840824321639418696079010331157756034900859756884545959023514413766483793098032832758157601883256897648712177696035116309768201748290876154533078702032178339242717742392484469052429233967462041830230419098885716006716337437918369250969457565832375327259474728012034723302317633011644049035448327203641568712305118534721311718333662730335314471540816271992815951695183525909398279764488317345752719958660252131465727236621491585335559782709158405179719259811874887289433931192359241539518844526924741189412718502913101027988622337855122594075623120508535336376278474153973932725047662806732867770663578016527184319423512171311066502802815774098441745671987469581652274482149352586834398765531178754456078598146065424750160942380511351295104118992623654214532980629275327947199154938704236543047885219212621393116234292062433727392737424439719954000390597165766501719802028058971014426072907661809991976449442858072112692215309246494188978041421199571165186633876573884601902149829985975518882540686773924851188235698442245941377254469180086024795246166498080150261263266535681885168339063777436753444535878672395663284527489914926269255033939061344031155596550344384360880668601138022730633609461484024775802311824249145369040761121718629397842539431176661542375112399205459364633743406440329846127882013754806446239742142637280964038990674884266437699710809743340850998908601818220740356238706847822210484615431291821178216214490208390499332911405046853620717877685925070404522233442555263819879013316310667127525991180403869211756208428475345418058935616131095773200067670060274521190087854085396030267172573206603848445795705249588710658088622902762040406144158568721266055763693557638580257610215262237057971815989402690226903396078420141130933844700657562987902106326465791511388073444730165204564635468150560165324367707184710376217379077134258869540963256449645111800423176959546634865457736288905183355314843347783156515431166403206777517164441772182900911112896194827540491812225724491397740590109633551919983045421901523357205386948759339703309281669202220908108630475838310171534951416756916795129635154179222557795959679
第四题:测试次数
x星球的居民脾气不太好,但好在他们生气的时候唯一的异常举动是:摔手机。
各大厂商也就纷纷推出各种耐摔型手机。x星球的质监局规定了手机必须经过耐摔测试,并且评定出一个耐摔指数来,之后才允许上市流通。
x星球有很多高耸入云的高塔,刚好可以用来做耐摔测试。塔的每一层高度都是一样的,与地球上稍有不同的是,他们的第一层不是地面,而是相当于我们的2楼。
如果手机从第7层扔下去没摔坏,但第8层摔坏了,则手机耐摔指数=7。
特别地,如果手机从第1层扔下去就坏了,则耐摔指数=0。
如果到了塔的最高层第n层扔没摔坏,则耐摔指数=n
为了减少测试次数,从每个厂家抽样3部手机参加测试。
某次测试的塔高为1000层,如果我们总是采用最佳策略,在最坏的运气下最多需要测试多少次才能确定手机的耐摔指数呢?
请填写这个最多测试次数。
1 package javaB_2018; 2 3 import java.util.Scanner; 4 5 /** 6 * @author zsh 7 * @company wlgzs 8 * @create 2019-03-23 9:31 9 * @Describe 标题:测试次数 10 * 11 * x星球的居民脾气不太好,但好在他们生气的时候唯一的异常举动是:摔手机。 12 * 各大厂商也就纷纷推出各种耐摔型手机。x星球的质监局规定了手机必须经过耐摔测试,并且评定出一个耐摔指数来,之后才允许上市流通。 13 * 14 * x星球有很多高耸入云的高塔,刚好可以用来做耐摔测试。塔的每一层高度都是一样的,与地球上稍有不同的是,他们的第一层不是地面,而是相当于我们的2楼。 15 * 16 * 如果手机从第7层扔下去没摔坏,但第8层摔坏了,则手机耐摔指数=7。 17 * 特别地,如果手机从第1层扔下去就坏了,则耐摔指数=0。 18 * 如果到了塔的最高层第n层扔没摔坏,则耐摔指数=n 19 * 20 * 为了减少测试次数,从每个厂家抽样3部手机参加测试。 21 * 22 * 某次测试的塔高为1000层,如果我们总是采用最佳策略,在最坏的运气下最多需要测试多少次才能确定手机的耐摔指数呢? 23 * 24 * 请填写这个最多测试次数。 25 */ 26 public class Main4 { 27 private static int maxn = 1005; 28 private static int[][] dp = new int[maxn][10]; 29 private static int inf = 0x3f3f3f3f; 30 public static void main(String[] args) { 31 Scanner cin = new Scanner(System.in); 32 int n = cin.nextInt(); 33 int m = cin.nextInt(); 34 for(int i = 0; i <= n; ++i) { 35 for(int j = 0; j <= m; ++j) { 36 dp[i][j] = inf; 37 } 38 } 39 System.out.println(work(n, m)); 40 } 41 private static int work(int n, int m) { 42 if(dp[n][m] != inf) { 43 return dp[n][m]; 44 } 45 if(n == 0) { 46 return dp[n][m] = 0; 47 } 48 if(m == 1) { 49 return dp[n][m] = n; 50 } 51 for(int i = 1; i <= n; ++i) { 52 dp[n][m] = Math.min(dp[n][m], 1 + Math.max(work(i-1, m-1), work(n-i, m))); 53 } 54 return dp[n][m]; 55 } 56 }
运行结果:19
第五题:快速排序
以下代码可以从数组a[]中找出第k小的元素。
它使用了类似快速排序中的分治算法,期望时间复杂度是O(N)的。
请仔细阅读分析源码,填写划线部分缺失的内容。
1 import java.util.Random; 2 public class Main{ 3 public static int quickSelect(int a[], int l, int r, int k) { 4 Random rand = new Random(); 5 int p = rand.nextInt(r - l + 1) + l; 6 int x = a[p]; 7 int tmp = a[p]; a[p] = a[r]; a[r] = tmp; 8 int i = l, j = r; 9 while(i < j) { 10 while(i < j && a[i] < x) i++; 11 if(i < j) { 12 a[j] = a[i]; 13 j--; 14 } 15 while(i < j && a[j] > x) j--; 16 if(i < j) { 17 a[i] = a[j]; 18 i++; 19 } 20 } 21 a[i] = x; 22 p = i; 23 if(i - l + 1 == k) return a[i]; 24 if(i - l + 1 < k) return quickSelect( _________________________________ ); //填空 25 else return quickSelect(a, l, i - 1, k); 26 } 27 public static void main(String args[]) { 28 int [] a = {1, 4, 2, 8, 5, 7}; 29 System.out.println(quickSelect(a, 0, 5, 4)); 30 } 31 }
a,i,r,k
第六题:递增三元组
给定三个整数数组
A = [A1, A2, ... AN],
B = [B1, B2, ... BN],
C = [C1, C2, ... CN],
请你统计有多少个三元组(i, j, k) 满足:
1. 1 <= i, j, k <= N
2. Ai < Bj < Ck
【输入格式】
第一行包含一个整数N。
第二行包含N个整数A1, A2, ... AN。
第三行包含N个整数B1, B2, ... BN。
第四行包含N个整数C1, C2, ... CN。
对于30%的数据,1 <= N <= 100
对于60%的数据,1 <= N <= 1000
对于100%的数据,1 <= N <= 100000 0 <= Ai, Bi, Ci <= 100000
【输出格式】
一个整数表示答案
【输入样例】
3
1 1 1
2 2 2
3 3 3
【输出样例】
27
资源约定:
峰值内存消耗(含虚拟机) < 256M
CPU消耗 < 1000ms
请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。
所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
不要使用package语句。不要使用jdk1.7及以上版本的特性。
主类的名字必须是:Main,否则按无效代码处理。
暴力破解法:
1 package javaB_2018; 2 3 import java.util.Scanner; 4 5 /** 6 * @author zsh 7 * @company wlgzs 8 * @create 2019-03-23 9:54 9 * @Describe 10 标题:递增三元组 11 12 给定三个整数数组 13 A = [A1, A2, ... AN], 14 B = [B1, B2, ... BN], 15 C = [C1, C2, ... CN], 16 请你统计有多少个三元组(i, j, k) 满足: 17 18 1. 1 <= i, j, k <= N 19 2. Ai < Bj < Ck 20 21 【输入格式】 22 第一行包含一个整数N。 23 第二行包含N个整数A1, A2, ... AN。 24 第三行包含N个整数B1, B2, ... BN。 25 第四行包含N个整数C1, C2, ... CN。 26 27 对于30%的数据,1 <= N <= 100 28 对于60%的数据,1 <= N <= 1000 29 对于100%的数据,1 <= N <= 100000 0 <= Ai, Bi, Ci <= 100000 30 31 【输出格式】 32 一个整数表示答案 33 34 【输入样例】 35 3 36 1 1 1 37 2 2 2 38 3 3 3 39 40 【输出样例】 41 27 42 43 44 资源约定: 45 峰值内存消耗(含虚拟机) < 256M 46 CPU消耗 < 1000ms 47 48 49 请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。 50 所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。 51 不要使用package语句。不要使用jdk1.7及以上版本的特性。 52 主类的名字必须是:Main,否则按无效代码处理。 53 54 */ 55 public class Main6 { 56 public static void main(String[] args) { 57 Scanner scanner = new Scanner(System.in); 58 int count = 0; 59 int N = scanner.nextInt(); 60 int[][] d = new int[N][3]; 61 for (int i = 0; i < N; i++) { 62 d[i][0] = scanner.nextInt(); 63 d[i][1] = scanner.nextInt(); 64 d[i][2] = scanner.nextInt(); 65 } 66 for (int i = 0; i < N; i++) { 67 for (int j = 0; j < N; j++) { 68 for (int k = 0; k < N; k++) { 69 if (d[0][i] < d[1][j] && d[1][j] < d[2][k]){ 70 count++; 71 } 72 } 73 } 74 } 75 System.out.println(count); 76 } 77 }
第七题:螺旋折线
如图p1.pgn所示的螺旋折线经过平面上所有整点恰好一次。
对于整点(X, Y),我们定义它到原点的距离dis(X, Y)是从原点到(X, Y)的螺旋折线段的长度。
例如dis(0, 1)=3, dis(-2, -1)=9
给出整点坐标(X, Y),你能计算出dis(X, Y)吗?
【输入格式】
X和Y
对于40%的数据,-1000 <= X, Y <= 1000
对于70%的数据,-100000 <= X, Y <= 100000
对于100%的数据, -1000000000 <= X, Y <= 1000000000
【输出格式】
输出dis(X, Y)
【输入样例】
0 1
【输出样例】
3
资源约定:
峰值内存消耗(含虚拟机) < 256M
CPU消耗 < 1000ms
请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。
所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
不要使用package语句。不要使用jdk1.7及以上版本的特性。
主类的名字必须是:Main,否则按无效代码处理。
1 package javaB_2018; 2 3 import java.math.BigInteger; 4 import java.util.Scanner; 5 6 /** 7 * @author zsh 8 * @company wlgzs 9 * @create 2019-03-23 10:00 10 * @Describe 11 标题:螺旋折线 12 13 如图p1.pgn所示的螺旋折线经过平面上所有整点恰好一次。 14 对于整点(X, Y),我们定义它到原点的距离dis(X, Y)是从原点到(X, Y)的螺旋折线段的长度。 15 16 例如dis(0, 1)=3, dis(-2, -1)=9 17 18 给出整点坐标(X, Y),你能计算出dis(X, Y)吗? 19 20 【输入格式】 21 X和Y 22 23 对于40%的数据,-1000 <= X, Y <= 1000 24 对于70%的数据,-100000 <= X, Y <= 100000 25 对于100%的数据, -1000000000 <= X, Y <= 1000000000 26 27 【输出格式】 28 输出dis(X, Y) 29 30 31 【输入样例】 32 0 1 33 34 【输出样例】 35 3 36 37 38 资源约定: 39 峰值内存消耗(含虚拟机) < 256M 40 CPU消耗 < 1000ms 41 42 43 请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。 44 45 所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。 46 不要使用package语句。不要使用jdk1.7及以上版本的特性。 47 主类的名字必须是:Main,否则按无效代码处理。 48 */ 49 public class Main7 { 50 public static void main(String[] args) { 51 Scanner sc = new Scanner(System.in); 52 int x = sc.nextInt(); 53 int y = sc.nextInt(); 54 System.out.println(dis(x, y)); 55 } 56 57 private static BigInteger dis(int x, int y) {// 使用BigInteger-->避免大数相乘产生溢出情况 58 int n = max(x, y);// 找到最外圈是第几圈 59 int k = n - 1;// k表示内圈总数 60 int lost = g(x, y, n);// 计算外圈路径长度 61 BigInteger most1 = new BigInteger(Integer.toString(8 + k * 8)); 62 BigInteger most2 = new BigInteger(Integer.toString(k / 2)); 63 /** 64 * most = most1*most2 65 * most = (8+k*8)*k/2 --->内圈总数是一个数列求和:1 8 16 24 66 */ 67 BigInteger l = new BigInteger(Integer.toString(lost)); 68 return l.add((most1.multiply(most2))); 69 } 70 71 private static int g(int x, int y, int n) { 72 /** 73 * 分成两大部分计算: 74 * 1.表示顶点处 75 * 2.表示每个边的情况 76 */ 77 if (Math.abs(x) == Math.abs(y)) { 78 if (x < 0 && y > 0) 79 return 2 * n; 80 else if (x > 0 && y > 0) 81 return 4 * n; 82 else if (x > 0 && y < 0) 83 return 6 * n; 84 else 85 return x == 0 ? 0 : 8 * n; 86 } else { 87 if (x == -n) 88 return n + y; 89 else if (x == n) 90 return 4 * n + n - y; 91 else if (y == n) 92 return 2 * n + n + x; 93 else 94 return 6 * 2 + n - x; 95 } 96 } 97 98 private static int max(int x, int y) { 99 //求最外边的圈数 100 if (Math.abs(x) >= Math.abs(y)) 101 return Math.abs(x); 102 else 103 return Math.abs(y); 104 } 105 }
第八题:日志统计
小明维护着一个程序员论坛。现在他收集了一份"点赞"日志,日志共有N行。其中每一行的格式是:
ts id
表示在ts时刻编号id的帖子收到一个"赞"。
现在小明想统计有哪些帖子曾经是"热帖"。如果一个帖子曾在任意一个长度为D的时间段内收到不少于K个赞,小明就认为这个帖子曾是"热帖"。
具体来说,如果存在某个时刻T满足该帖在[T, T+D)这段时间内(注意是左闭右开区间)收到不少于K个赞,该帖就曾是"热帖"。
给定日志,请你帮助小明统计出所有曾是"热帖"的帖子编号。
【输入格式】
第一行包含三个整数N、D和K。
以下N行每行一条日志,包含两个整数ts和id。
对于50%的数据,1 <= K <= N <= 1000
对于100%的数据,1 <= K <= N <= 100000 0 <= ts <= 100000 0 <= id <= 100000
【输出格式】
按从小到大的顺序输出热帖id。每个id一行。
【输入样例】
7 10 2
0 1
0 10
10 10
10 1
9 1
100 3
100 3
【输出样例】
1
3
资源约定:
峰值内存消耗(含虚拟机) < 256M
CPU消耗 < 1000ms
请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。
所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
不要使用package语句。不要使用jdk1.7及以上版本的特性。
主类的名字必须是:Main,否则按无效代码处理。
1 package javaB_2018; 2 3 import java.util.HashMap; 4 import java.util.Map; 5 import java.util.Scanner; 6 7 /** 8 * @author zsh 9 * @company wlgzs 10 * @create 2019-03-23 10:22 11 * @Describe 12 标题:日志统计 13 14 小明维护着一个程序员论坛。现在他收集了一份"点赞"日志,日志共有N行。其中每一行的格式是: 15 16 ts id 17 18 表示在ts时刻编号id的帖子收到一个"赞"。 19 20 现在小明想统计有哪些帖子曾经是"热帖"。如果一个帖子曾在任意一个长度为D的时间段内收到不少于K个赞,小明就认为这个帖子曾是"热帖"。 21 22 具体来说,如果存在某个时刻T满足该帖在[T, T+D)这段时间内(注意是左闭右开区间)收到不少于K个赞,该帖就曾是"热帖"。 23 24 给定日志,请你帮助小明统计出所有曾是"热帖"的帖子编号。 25 26 【输入格式】 27 第一行包含三个整数N、D和K。 28 以下N行每行一条日志,包含两个整数ts和id。 29 30 对于50%的数据,1 <= K <= N <= 1000 31 对于100%的数据,1 <= K <= N <= 100000 0 <= ts <= 100000 0 <= id <= 100000 32 33 【输出格式】 34 按从小到大的顺序输出热帖id。每个id一行。 35 36 【输入样例】 37 7 10 2 38 0 1 39 0 10 40 10 10 41 10 1 42 9 1 43 100 3 44 100 3 45 46 【输出样例】 47 1 48 3 49 50 资源约定: 51 峰值内存消耗(含虚拟机) < 256M 52 CPU消耗 < 1000ms 53 54 55 请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。 56 57 所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。 58 不要使用package语句。不要使用jdk1.7及以上版本的特性。 59 主类的名字必须是:Main,否则按无效代码处理。 60 61 */ 62 public class Main8 { 63 private static int N = 0; //代表有多少行 64 private static int D = 0; //代表这个时间段 65 private static int K = 0; //代表赞数的多少 66 67 private static Map<Integer, Integer> map = new HashMap<Integer,Integer>(); 68 69 public static void main(String[] args) { 70 71 Scanner scanner = new Scanner(System.in); 72 N = scanner.nextInt(); 73 D = scanner.nextInt(); 74 K = scanner.nextInt(); 75 76 int[][] data = new int[N][2]; 77 for(int i=0;i<N;i++) { 78 data[i][0] = scanner.nextInt(); 79 data[i][1] = scanner.nextInt(); 80 } 81 int[] ts = new int[N]; 82 int[] id = new int[N]; 83 for(int i=0;i<N;i++) { 84 ts[i] = data[i][0]; 85 id[i] = data[i][1]; 86 } 87 jisuan(ts, id); 88 89 for(int i=1;i<=map.size();i++) { 90 System.out.print(map.get(i)); 91 System.out.println(); 92 } 93 } 94 95 public static void jisuan(int[] ts,int[] id) { 96 97 int k = 1; 98 99 for(int i=0;i<N-1;i++) { 100 for(int j=0;j<N-i-1;j++) { 101 if(ts[j]>ts[j+1]) { 102 int temp = ts[j]; 103 ts[j] = ts[j+1]; 104 ts[j+1] = temp; 105 106 temp = id[j]; 107 id[j] = id[j+1]; 108 id[j+1] = temp; 109 } 110 } 111 } 112 113 for(int i=0;i<N;i++) { 114 int temp = ts[i] + D; 115 int count = 0; 116 for(int j = i;j<N;j++) { 117 if(ts[j]>temp) { 118 break; 119 } 120 if(ts[j]<temp&&id[j]==id[i]) { 121 count++; 122 } 123 } 124 if(count>=K) { 125 if(!map.containsValue(id[i])) { 126 map.put(k,id[i] ); 127 k++; 128 } 129 } 130 } 131 } 132 }
第九题:全球变暖
你有一张某海域NxN像素的照片,"."表示海洋、"#"表示陆地,如下所示:
.......
.##....
.##....
....##.
..####.
...###.
.......
其中"上下左右"四个方向上连在一起的一片陆地组成一座岛屿。例如上图就有2座岛屿。
由于全球变暖导致了海面上升,科学家预测未来几十年,岛屿边缘一个像素的范围会被海水淹没。具体来说如果一块陆地像素与海洋相邻(上下左右四个相邻像素中有海洋),它就会被淹没。
例如上图中的海域未来会变成如下样子:
.......
.......
.......
.......
....#..
.......
.......
请你计算:依照科学家的预测,照片中有多少岛屿会被完全淹没。
【输入格式】
第一行包含一个整数N。 (1 <= N <= 1000)
以下N行N列代表一张海域照片。
照片保证第1行、第1列、第N行、第N列的像素都是海洋。
【输出格式】
一个整数表示答案。
【输入样例】
7
.......
.##....
.##....
....##.
..####.
...###.
.......
【输出样例】
1
资源约定:
峰值内存消耗(含虚拟机) < 256M
CPU消耗 < 1000ms
请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。
所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
不要使用package语句。不要使用jdk1.7及以上版本的特性。
主类的名字必须是:Main,否则按无效代码处理。
1 package javaB_2018; 2 3 import java.util.Scanner; 4 5 /** 6 * @author zsh 7 * @company wlgzs 8 * @create 2019-03-23 10:36 9 * @Describe 标题:全球变暖 10 * <p> 11 * 你有一张某海域NxN像素的照片,"."表示海洋、"#"表示陆地,如下所示: 12 * <p> 13 * ....... 14 * .##.... 15 * .##.... 16 * ....##. 17 * ..####. 18 * ...###. 19 * ....... 20 * <p> 21 * 其中"上下左右"四个方向上连在一起的一片陆地组成一座岛屿。例如上图就有2座岛屿。 22 * <p> 23 * 由于全球变暖导致了海面上升,科学家预测未来几十年,岛屿边缘一个像素的范围会被海水淹没。具体来说如果一块陆地像素与海洋相邻(上下左右四个相邻像素中有海洋),它就会被淹没。 24 * <p> 25 * 例如上图中的海域未来会变成如下样子: 26 * <p> 27 * ....... 28 * ....... 29 * ....... 30 * ....... 31 * ....#.. 32 * ....... 33 * ....... 34 * <p> 35 * 请你计算:依照科学家的预测,照片中有多少岛屿会被完全淹没。 36 * <p> 37 * 【输入格式】 38 * 第一行包含一个整数N。 (1 <= N <= 1000) 39 * 以下N行N列代表一张海域照片。 40 * <p> 41 * 照片保证第1行、第1列、第N行、第N列的像素都是海洋。 42 * <p> 43 * 【输出格式】 44 * 一个整数表示答案。 45 * <p> 46 * 【输入样例】 47 * 7 48 * ....... 49 * .##.... 50 * .##.... 51 * ....##. 52 * ..####. 53 * ...###. 54 * ....... 55 * <p> 56 * 【输出样例】 57 * 1 58 * <p> 59 * <p> 60 * <p> 61 * 资源约定: 62 * 峰值内存消耗(含虚拟机) < 256M 63 * CPU消耗 < 1000ms 64 * <p> 65 * <p> 66 * 请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。 67 * <p> 68 * 所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。 69 * 不要使用package语句。不要使用jdk1.7及以上版本的特性。 70 * 主类的名字必须是:Main,否则按无效代码处理。 71 */ 72 public class Main9 { 73 static int n, map[][], vis[][]; 74 75 static boolean dfs(int i, int j) { 76 if (i < 0 || i >= n || j < 0 || j >= n || vis[i][j] == 1) return false; 77 vis[i][j] = 1; 78 boolean f = false; 79 if (map[i][j + 1] == 1 && map[i][j - 1] == 1 && map[i - 1][j] == 1 && map[i + 1][j] == 1) 80 f = true; 81 return dfs(i, j + 1) || dfs(i, j - 1) || dfs(i + 1, j) || dfs(i - 1, j) || f; 82 } 83 84 public static void main(String args[]) { 85 int r = 0, t = 0; 86 Scanner sc = new Scanner(System.in); 87 n = sc.nextInt(); 88 map = new int[n][n]; 89 vis = new int[n][n]; 90 for (int i = 0; i < n; i++) { 91 String s = sc.next(); 92 for (int j = 0; j < n; j++) 93 if (s.charAt(j) != '.') 94 map[i][j] = 1; 95 else 96 vis[i][j] = 1; 97 } 98 for (int i = 0; i < n; i++) 99 for (int j = 0; j < n; j++) 100 if (vis[i][j] != 1) { 101 102 r++; 103 t += dfs(i, j) ? 1 : 0; 104 105 } 106 System.out.println(r - t); 107 } 108 }
第十题:堆的计数
我们知道包含N个元素的堆可以看成是一棵包含N个节点的完全二叉树。
每个节点有一个权值。对于小根堆来说,父节点的权值一定小于其子节点的权值。
假设N个节点的权值分别是1~N,你能求出一共有多少种不同的小根堆吗?
例如对于N=4有如下3种:
1
/ \
2 3
/
4
1
/ \
3 2
/
4
1
/ \
2 4
/
3
由于数量可能超过整型范围,你只需要输出结果除以1000000009的余数。
【输入格式】
一个整数N。
对于40%的数据,1 <= N <= 1000
对于70%的数据,1 <= N <= 10000
对于100%的数据,1 <= N <= 100000
【输出格式】
一个整数表示答案。
【输入样例】
4
【输出样例】
3
资源约定:
峰值内存消耗(含虚拟机) < 256M
CPU消耗 < 1000ms
请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。
所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
不要使用package语句。不要使用jdk1.7及以上版本的特性。
主类的名字必须是:Main,否则按无效代码处理。