设为首页 加入收藏

TOP

URAL 1698 (一)
2014-11-23 19:15:21 来源: 作者: 【 】 浏览:7
Tags:URAL 1698

题目大意:统计位数不大于n的自守数的个数。

Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u


数据规模:1<=n<=2000。

理论基础:

自守数:参见链接1。

性质定理1:一个数为自守数当且仅当它为一个自守数的后缀。

性质定理2:(1除外)n位数的自守数仅有两个(位数包括前导0),优先考虑最高位不为0的时候。

题目分析:有了两个性质定理以后我们可以知道,每个自守数都是已有的自守数+前缀数字而来的,所以只要知道n位的两个自守数,就可以得到n+1位的两个自守数。反过来思考,如果我们知道了n+1位的自守数后那么小于n+1位的自守数我们都可以写出来。这样就出现了一个想法,先用递归将两个两千位(bign)(仅用到大数的乘法操作不是很困难)的自守数求出来,然后我们再找出值相同的自守数的个数m。用总数:1+2*n减去m即为答案了。当然,打表肯定是最好啦。扫描前导零的个数即为重复的个数。

代码如下:

#include   
#include   
using namespace std;  
char number1[2001]=  
"0302695456948792438016548848805106486276062082716415913252360\  
9790500938385405426324719893931802209823600162545177681029159\  
3965045066578090330527721983852863418796455114247485363072354\  
5704904450912521423427595549184397398445871252869481982692702\  
9255264834903206526851272202961318699947776535481291519857640\  
4229681830917734452777232007376038258831727292795636574190144\  
4523595431910306357249617898820317578776106213770808096781137\  
4931911766563031490205784352509572880668464121069252802275061\  
2985116162063840067789794024490238751112586895345495148882006\  
7866770234100283954928297028644727362521753544319791185506815\  
7264858804852673871684804002188529473022223344541221328464844\  
1535937936631336044589403287234784019473575603613462120086753\  
7334691331433871735088021260028575298538664393102232655345477\  
6845029957025561658143370236502074744856814787872902092412582\  
9053012491246688683515876774998917686787157281349408792768945\  
2979709777230540335661882819870221063055796723980661119019774\  
4642421025136748701117131278125400133690086034889084364023875\  
7659368219796261819178335204927041993248752378258671482789053\  
4489744014261231703569954841949944461060814620725403655999827\  
1588356035049327795540741961849280952093753026852390937562839\  
1485716123673519706092242423987770075749557872715597674134589\  
9753769551586271888794151630756966881635215504889827170437850\  
8028434084412644126821848514157729916034497017892335796684991\  
4473895660019325458276780006183298544262328272575561107331606\  
9701586498422229125548572987933714786632317240551575610235254\  
3994999345608083801190741530060056055744818709692785099775918\  
0500754164285277081620113502468060581632761716767652609375280\  
5684421448619396049983447280672190667041724009423446619781242\  
6690787535944616698508064636137166384049029219341881909581659\  
5244778618461409128782984384317032481734288865727376631465191\  
0498802944796081467376050395719689371467180137561905546299681\  
4764263903953007319108169802938509890062166509580863811000557\  
423423230896109004106619977392256259918212890625",number2[2001]=  
"9697304543051207561983451151194893513723937917283584086747639\  
0209499061614594573675280106068197790176399837454822318970840\  
6034954933421909669472278016147136581203544885752514636927645\  
4295095549087478576572404450815602601554128747130518017307297\  
0744735165096793473148727797038681300052223464518708480142359\  
577031816908226554722276799262396174116827270720436342
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇URAL 1748 下一篇HDU 2825 Wireless Password-AC自..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·求navicat for mysql (2025-12-26 13:21:33)
·有哪位大哥推荐一下m (2025-12-26 13:21:30)
·MySQL下载与安装教程 (2025-12-26 13:21:26)
·Linux_百度百科 (2025-12-26 12:51:52)
·Shell 流程控制 | 菜 (2025-12-26 12:51:49)