一道奥数题,题目是:

500x501x502x503x……x2001ⅹ2002之积的末尾连续有多少个零?


先试下excel:从A1开始输入500.并拖动形成数列

500

501

502

503

504

505

使用公式:=PRODUCT(A1:A6),计算结果是

16,099,090,693,560,000

如果把数列递增到515,使用公式:=PRODUCT(A1:A16),计算结果是

1.93504E+43

excel自动转换成科学计数法,即使不使用科学计数法,excel也只保留15位左右的精度,也就是只有前15位是正确的,后面只能这样显示:

19,350,405,399,874,700,000,000,000,000,000,000,000,000,000

显然,光依靠excel这差的计算能力,不能完成任务。

尝试编制程序,完成超大数计算。初步试算500X。。505=16099090693560000

结果正确。

再测试 500X。。515=,结果是19350405399874725767181267969135427584000000

在程序中设计有自动统计结尾有多少个零的功能,500X...X515,结果尾数有6个零。

终极测试:500X...X2002,结果是

544406347301094261289734793578974343896339998192236430721302800380038891638120579419178639198483827829183579322332644738492847832145940704227230515755816174539208165011278699254306778981006242757179307784181090707319086394979367721497561348624255427993416121793312050919482070459001929087320509990924441530303644155655894699121935651771189687237781892674468457550964239779607034511171497738546678860867211955374370930860055259921765028896431890329426042600741345510684269258192077005166443863258117358351281386891918141344139394579445046468759695915488562234620280655088967031532079182916649179846634244180225077106187627609569564164973863779198105271820395239991567776117179828103442596376533716262297139714776840579249548187673828296716914181979725823709381779275123410685234412406560231547119755609869712100746410967029269110243748759969845490792798894969822933039719447844646393754938483518386375363377390792117577252468950759274822689129167366369029093459464534030176861121363000944467765483333535631708522494501890172477434038528532439721242975606549115170652999259169977814305795418644343540911381282713425458174511883044346461177713016135659783956620900067006897944565423861721260375372525660304389749547130960758988307605076871010130127448303304608358217587641383149515852952512489764088029811620358165418130739249564225496987689237907214859314012743427519479783124173364216265488540442141415373486625542422432122579759567169944516392758489274052470537918738156298979669927620836429801629458976096029122017783018515296937469066473691518198316674759439551343655662433707102441359776054616500988440638423373240166101935017136402415707145836274792482859181572644758291832506508113806020459310508963288785110116959332443709743128076218025993492652567436014110995844342031200113186470464366800154386212969858590052252007354010104490595518105337046024567519988133506711718852487679581814399002701745973382017373162745195492201196772207416525611966458274706056795608490944901139643770886749864336117770025938691709834092656074801487098643251178723808914666917265738538617483672606476558954571218689643827011854497620594253197690739412742645011334792473415688968548880713851861550515874891768877369391227214875036849774213291517871724240276035414360635124281122092900870388776744224028583839289514768549440757554290027074626672050199701321247363814318301011427667860232053212150301412957355470874722205683252913614319419713812543246110217455676284702980266748225494669943868866744087170275923645458348154100015002458278258773377151874297692251937094376946144910549749987644295494025329075269890448615871662314385455579075825331275086975036899719875887976937833623807922766605436654717590206143617886656433765388215903384235756015577184452502346623503340206710358188537903209165651702099666366439227033860415198104211219247042749148643742013630634787385489503759961763234021199092795996640487227666694739175909581558523357820358934686735357073351439225182635973833742600760203197240868219133914227277182296341726526625816801807712554133769891853851207412637468085587367216559569100921185723296568368564385579930894145061797648504207934545004879598405630708961007985907954279950963905736127678503445895029708791011552488764731854742303883739574954514751579023995060358241055730153513570836832039260870785538352719138407131561920846473863909329108018281587425717620138716513235595864744140114053314036292128459743679279635695409538924432090631368464735695734433381739588344394147283299264043741270491559511953589941498319827264193257367268387869593381880469035603489926983437784553526193170842840669076801607784935567587091525711535505541989093721848248251639186626325022161152578657856568891690840835305920273375533545624372872003958570873271841690599760604209445354372930605380608020840914316100416182821923131301512136397510586847845869857360708173625195564078617701961001304875410499093968444177879411644611925109180519488534082105567538944656020336151031300394633495112885242563615888632841359581992581160355722742843987237471311980935732495577512749363820539403255528664196273863723719510263209852734230518980684620272302954346607919494357179906433995150770468461960632159605093917248682052065148603999048383882091565305164726272000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

结尾有378个零,你算对了么?

可能有人会说,奥数题这样求解不是数学方法,应该计算2和5的个数来计算0。

是的,我完全同意以上看法。我做的只是验算一下结果到底有多少个0,验算工具从另一个方面检测计算结果。

当然,我也验算了我设计的超大数计算程序的正确性,也测试了它的运算速度是否达到使用要求。

你算对了吗?