码迷,mamicode.com
首页 > 其他好文 > 详细

2505 上学路线

时间:2016-08-18 21:28:13      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:

2505 上学路线

 

 时间限制: 1 s
 空间限制: 64000 KB
 题目等级 : 钻石 Diamond
 
 
题目描述 Description

因为是学生,所以显然小A每天都要上学。小A所在的城市的道路构成了一个n*m的网格,每条道路都是可以单向通行的。小A家在点(1,1),学校在点(n,m)。在不移出边界的情况下,小A可以从点(x,y)移动到点(x+1,y)或(x,y+1)。为了追求新鲜感,小A经常走不同的道路去上学。有一天,小A突发奇想:到底他可以有多少种不同的上学路线呢?

输入描述 Input Description

两个正整数n,m,意义如前所述。

输出描述 Output Description

一个正整数,小A的上学路线数量。

样例输入 Sample Input

2 3

样例输出 Sample Output

3

数据范围及提示 Data Size & Hint

对于30%的数据,n,m<=100;

对于100%的数据,n+m<=40000.

分类标签 Tags 点此展开 

 
 
高精度模板
包含高精乘、高精除
 
90分代码:(最后一个点T掉了)
#include<cstdio>
#include<iostream>
using namespace std;
#define N 2000500
int num[N]={1};
int n,m,len=1;
void mul(int k){
    //num[1]*=k;
    for(int i=1;i<=len;i++){
        num[i]*=k;
        if(i>1){
            num[i]+=num[i-1]/10;
            num[i-1]%=10;
        }
        
    }  
    for(;num[len]>=10;len++){
        num[len+1]=num[len]/10;
        num[len]%=10;
    }
}
void div(int k){
    int d=0;
    for(int i=len;i;i--){
        d=d*10+num[i];
        num[i]=d/k;
        d%=k;
    }
    while(!num[len]) len--;
}
void C(int n,int m){
    for(int i=n;i>n-m;i--){
        mul(i);
        div(n-i+1);
    }
}
int main(){
    num[1]=1;
    scanf("%d%d",&n,&m);
    n--;m--;
    C(n+m,min(n,m));
    for(int i=len;i;i--) printf("%d",num[i]);
    return 0;
}

附最后一个点的数据(太恶心了)

输入数据
20000 20000

正确答案
158010074156475387122505436461355997717978673310058922068843407731481830539837430059926121531659105345285752400530415734368289848517029941254140820154810161313896232429318020625900279302935885901655983194325005367857103648991303454304720263327492264043714592082325276352680797157204349560818736911239195758541249409774782901829669937632775759860907873089832585049868203183009613989307597564494452518555485656194792225624736058417006719767772950081761505371376538550544760775934280235161670006650532250233620925407855920956400528571068209523143089598293359034425885355953119979711454869144412088469599239136688160474529925374005118841908982062650846758488469281383727965887392891300455394211651674398580261990142487992069346863284864408146564875608780511250056971989381071066270985712881699134293466579786224961916950877251306604003799948303243596948895585477756805293354367831522498686938032644824537282666834070227029069751097434402657589490313445520037164833055455612742092310277197808524178793469735673502124670402031746385277465341157897702741282496385790245763573954024892608879600592221261861340102187648893234981228858246121174657820811590275380536217718860717426665926918228751497289546780230540591160998271301505756013742947314780747340307091201719780712037080528374424860929044716265081410273233882026557308716969496620006948685242574415705089397861436445922165734716671122521343212159417905592699746350079275304922464256526816996476190085149468089697774477490318049635560665469766774318303084442414217561230427000210000267487497542264973994570546231273239846693155511379648735128912463624567565089962185195945128047707064520348560169401352082231762934707004684040838272503026013304356548877201826652100384275391905421038601490927761959636961099796899369268659221366979541769201616016642633614332464110061769042979637337465902611715625071152274254269924208972261684732423697586327922504636492454548195007404314392518169846128108279214717731926356117936264043094811791017036906051162286198393082537530666659488471562550912579954696436708897835203304248134746030582241524029202265094751076099625490418436665107610288638839396592399829525777910283696622811355102434067705295066550612709882440460727897029017673098768955285156201743429919150765791721783915459163278328268986008974769730455261755004917982170385178540195748970662243198074218447786186158990573249623381202716157771546903064619720403457082058386377850252693250724779496548093569762635819860491031756701787792817756347584177191489368268231819763466412994318187642228338818571033151611624152809069952397212314937625390430338119223439313308549927579902070509035228914039035835822643354700078436062962566935709928972051251151618857933439486801100721925763419956799804261332458099731681888687665479575779422331990228362208177530284736374484090894282241722657702721979384272910445530229247934127107185390591679794996007776785824092852137781742378305742266652305651750698787488542296553367069933908693642127527090206715495884262247184010244096183915020396508037565316696214059922852327155600952295299653659264852384614439197298065706180982658717011545356124804860532806745754323498548954628078535682823254743366398301895333121382618780554641988729974432400189867727352516601619903164844779466339734534979792470987611375053506296389766158904633242586958781404541693249649626245483511134270916398585190867235100695635849761565661454048568898693506116789231457768603633636283795610231263616440282442744157104950867047970340788406096414898661485650098861870830791732942325936510231790501529066529418322893948558098406663417131730940812394122572052373068775461075929251703754100604697270982383132088503645065342579543511834527897076660627118724015509046706714967999159105355842826512992975891103230458402546322411619339834186425789701825649269458752384446585342609633866399181415447972440018173912633563812136212674575109741406057144471148618800887593357083799966042553829132369961644369424575138563165861674245855347763291687701068892910070947996277203285368613495095700080248227514465711012828177323021409825808331768397670528116415991707205368297571131367461364920723442840525882997879898504162592845845900333757085880706542316365558885047883026140469772209388147755172430725908208980578277029864666610056013421961785936218438790904397106172599887710937062236157012923162563033661294341761561175301268041644155124716388402102338391126879759804096610795672439659040649678503937218180481672638816893750803946482270940799451994069913034872392597148801968905624531564669675336842672201785720160971154866191631273213754460363221250710729034731108255586825243626716030434914746343584547254275572688509441318769050404188844889679029511214866297470180067244636388984594294189254912943101152722833301357792494759862789827569538790077143091390503433289130805351199672579533393649171315215464162695347325248359340551415750877790289184566492670378701165877557106932188508205142692274557662115000293318843793512922900262635070178882446654619792428955151694385407768963255537865131166722331736126127247612410076776460337110798477016611256750468611665706362889053308352256028694434301337629548354973149483796325177398917409222678518317603861564052519452037240604383865131504126521526676969851710234783567879083951437700123914985442052291813042984486898064323487333522973418988827246006061671486252791346165453856359654532825340972900022751482009467008305348743772157865262025401517651293233170774946343863751987446818200257069109894446441621228413235267684517643450860405923264530831331661465222892869031580231885463951913752091798281645590140446526542775161102227454848976523390235051001397828173987238673991993260867161795317150744335352706836827166586912182170546162499042692653734131352514130103057278196214781627228066908393986995332582510468974718930384189298945525123585582174908305352115450041304798212164482455100732029024420997187464408618248951234901620806439409990571205731961626256530850536747098739613941012229438237771704468057536640797473572557001951566351153454446157525138320243124412203191500669610334053298075962574033627706452780313302402524394253811080578586235254614094263724157954347523888199573978138288921463135708384143656724955727475514066758495034143679173271230459047811099429472890253720376962159866689477118693791611655917940545750956231569732883592883004818128742388964874092763206012743050150539705100678242918542563293944962157153220818724251041066838918269934429642170928921808442338292731469766925653681061406382889524546568003318676170220700698487004672880065119867515701328217817467626874872426904659002080258792716715275787349842054699927759173966237827013831973689287191433317175358506504334245912512332696733505327589556179824544398177483862260087540399587540474684830726259161179235476776991768621421707248308028100805296570215008859237624889676239767324667607562212420306645483129931117310097038518923527423103925830811861908415645908291736724399237954018046371439286684938013566373734956763100112331664920848061917928933591086135973614916995003405818202842953662479832694036377196709872423436213705644744918133379364199481227462743238623409155259109387420969745772293669124468519708804164874657301168363374889511908142564446996682004844531351242261942905613945853063555471486335919221549903657952604497196951441905964384410543767463181604516512285940930186242581655344748354533979290366961135646841712959468783475770213127277528351789046368408064096328805592260490590371260471017647117743083800423236751016829936475193512346572890729427088104334748514893736997262061652376704677671675374397370663596744716898593261278304161433383031209383656571484566585548486378927441434385938336677199642524061236179236219439155485011858840649044542335740820034539121565811744701779918350599488634276090301835137611883790058357896542192359780186885717405500160273483623094479678942922439220845399112892971543195358815024125279056080650098163076581876052268227183110056088304912519669111258493858415678882733597141282560398315649031145456966841793673859960248026786451943625006442736243269682259309478932211701643671818518277377796178139740439046199309163177196530988350471785348604348432843511536355222786732139439915196300026070215937046550415926396397285062061934457861132749806938781680313266745617200102465897092922351019058579908314026365470660109067622546201724861113035067761098047305036117059784969999536549636058715377525140568281042087591645271705816751635714383611667052771363019337006211708152718032620339068557860531901252879733375727591328609266570663490851459776381962635295550972121576588360306767404477196465492572126383020099226747859363115752297201366858218770082987426777319052034685155943566652901638704333329328522580176603737181354336839292400747325501082801231226123515346351820586103823252709892947313635402766240302340916503909740264151089432974384426858347087542144599455877551447144783319140973863521639405468288639738278953593880367757289641458857033495237349771777377285197240004374743108808678210381459653932887238255091818345988726372939035259697184553322128745283015474217977353617214994630950093863634258453213177382367876493954811562492800734813733093031403380743757480775485217128711775017687979278549497876239488109205975237143326375840217217381168022961247549150596364682388110486838144783739493500570339651600030335162391072303879585386868161307950433424507591678357060699208603188831246064998376224742709012414886448521750402034656759321245838917655402306455003037139771286284674146895659010730304212184348272186526471376451758831201596681579511505412957958018188980870342592665807744948996324240859756188487174193587763143693692138322885855038843247259776468682666632868537527085832883440655405272547134059273705796938605988723588135801723221151336334837131395700022342350966132150574471504560558030087717304926483256869102467934272337489210500805936105161050069108020900850206122736701314631216605524560288492136431180626318147720782683679832745474186256430701638604552134164104023254028866686235818697865188842103898528537928116542198230917707422779740545023221644172820934948416020390487407220030509556205384778251382781053438904072238132030266902657586046235283204792757135387494758748170667293414348130149307316832478662164629644535091889630207210257155010926640822346899772150723864504222841668238429362935200091859883231984750215520344594050584562861318672328951456808284506933211424458498080311748623768245164078900571507747804740150562939309074557487526989590240182046929390733756693546365379077212588165782059108677619230268429060871335964066308156214638666952691921360536342573702637660534118258088974902207891532890368527716352257690704659194842152547670872719871697143372968275140644409552923766954678094814388475443294333347475890800376330074244369417280918186018221407993594210524966678927776808020149339307830915723635387587593586595077135289183408638189015271743924120351428887085764934702455341942716559317970994467354128959484205122926892040079440740399280297253068415325531760637285753166180082057034594810588828282333994499330744865368401619018299551268274012430994404560468411921331354589829944750771042614122553070580955238731516109604465841279346169087870290374275995583821054774841495382838543479924825805070328593653235624817194251265635930770448611118370207134018436338559360396135102172950803561612103853673999800394390982196408245693265187675519291987307213659179628903706593193499257429642357520389937833953640971266022346546883196640246081357263337341262273756767520729009625280782944633946681660791387075547703213202477743965560530035562606556910564969392745303548698696528472547923559973584233327543518154899377307308825858847385035076345134246118314632197299120578867847051714245351856524293509601865061166804802796671781855585291426938481030983733348131070059430159155675941518928250058442260479498315613899970730873773039506898065394451284847843721452650187330401937794015760563686997541220695505581834998591481421642452808782337636418001855334422454542125003449793096326762217892160000

 

 

2505 上学路线

标签:

原文地址:http://www.cnblogs.com/shenben/p/5785206.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!