pascal题目2

来源:百度知道 编辑:UC知道 时间:2024/06/21 23:08:59
据,n<=30000。
挖土豆
【题目描述】
鸣人又要干体力活了,这次他和小樱去帮一位大伯挖土豆。
大伯:哦,你们来啦!我先带你们去田里看看我的土豆。
鸣人:土豆长在地底下?
小樱给了鸣人一拳:笨蛋,当然是的啦!
大伯的土地很奇怪,是长长的一条,只看见往远处的一个个坑排成一条笔直的直线。鸣人跑过去挖了起来,随便挖开几个坑,有些坑里有土豆,有些却是萝卜。
鸣人:这是怎么回事啊?
大伯:这一排共有m个坑。我种土豆的时候记得,先种了连续的4个坑,然后空了若干个,再种了连续的3个坑,再空了几个,再种了……。多出来的坑后来全补种萝卜了。
小樱:……
鸣人:大伯真有创意啊!
大伯:呵呵,种起来容易,挖起来难。我现在都忘了到底哪些坑是土豆了啊。
鸣人:包在我身上吧!
小樱心想:太阳从西边升起来……
鸣人:按你说的种法,土豆现在会有多少种可能的分布呢?
小樱看了一下田里,有的坑被翻开了,露出了坑里种的东西,有的坑还没有,因此不知道种了什么。不过想了一会儿,她就有答案了。
鸣人:怎么算?怎么算呢?
那么,知道了土地现在的状态,再加上大伯的描述,你的任务是帮鸣人计算,土豆有多少种可能的分布情况?
【输入格式】
第一行,一个长度为m的字符串,描述了大伯的土地。字符串中有三种字符,‘?’表示没被挖的坑,‘*’表示挖出土豆的坑,“.”表示挖出萝卜的坑。
第二行,一个整数n,表示大伯种了n段土豆。
第三行,n个整数,依次描述了每段土豆的数量。每段土豆都是连续种下的,且相邻两段土豆之间一定有至少1个坑的间隔。
【输出格式】
输出仅一行,一个整数,表示土豆可能的分布情况总数。最后答案可能比较大,将它模6391523输出。
【数据范围】
对于30%的数据,m<=20,n<=5;
对于60%的数据,m<=120,n<=15;
对于100%的数据,m<=5000,n<=200。
挖土豆

输入样例 potato.in
??*?*??*???.

xor:
异或,二进制运算.可逆运算.1 xor 1=0, 0 xor 0=0, 1 xor 0=1, 0 xor 1=1.
a xor b的运算方法:将a,b 转化为2进制数,再进行对比,每个数位上的0或1如果相同,那么结果就取0,如果不同就取1,将得到的结果转化为原来进制的数,就是结果.
在 oi中,常用于位运算

按照上述所说
21的2进制数为10101,2的则为10

进行对比(10的前面补上3个0)后得到结果10111
再转换为2进制数
为23
参考资料:http://baike.baidu.com/view/64546.htm

请说明详细一点,土豆的连续数目在题中讲述的太宽泛,给一组大一点的数据

这不是要鸣人的命吗?