“扇贝杯”南邮第二届软件和信息技术专业人才大赛题解

题目差不多就是省赛的难度了,so……
A. UCU与SadBB的故事

在很久很久以前,大概也就是3年前,SadBB觉得他的ID过于愚蠢,所以决定换一个ID。于是一个奇怪的ID:UCU,横空出世。

大家觉得UCU一定有着奇怪的含义,比如说可能是一位美丽可爱的小姐姐的代 。

基于这样的猜测,某侦探开始了他的破案之旅,他认为UCU一定代表着,这个小姐姐的名字的第一个字和最后一个字的首字母是一样的,且第二个字的首字母为C。

他收集了SadBB认识的可爱的小姐姐的名字,筛选出了其中三个字的名字,并将她们名字转换成了拼音,眼看真相就要水落石出,来自东方的一股神秘力量将他封印了起来。

现在你拿到了这份名单(所有名字都被转换为拼音全拼了),你能帮忙寻找出这谜之可能存在的小姐姐吗本故事纯属虚构)

 

输入:

第1行为一个整数n,1<=n<=100

第2到n+1行,每行由三个拼音单词组成,拼音单词之间用空格隔开。

 

输出:

每行输出一个满足条件的名字的拼音,每个名字的三个拼音之间用空格隔开,名字的输出顺序应与输入顺序一致。

 

样例输入:

4

yu bu yu

jiang chun ji

guan jin chu

li chen liang

 

样例输出:

jiang chun ji

li chen liang


题目分析:这个题。。。直接跳过吧

B. 大法师的故事

UCU接到了出题任务后毫无思路,苦思冥想数日无果后寻求某位可爱的小仙女的帮助。小仙女说:蓝桥杯这么喜欢考暴力,你不如出一道dfs啊。UCU恍然大悟,开始思考如何在题面里加入一位邪恶的大法师。

有一位邪恶的大法师,他有一个n*m的大花园,有一天他把自己的大花园,分成了一个个1*1的格子,所以,一个好好的大花园,就变成了一个n*m的格子阵。他开始布置自己的大花园,啊呸,格子阵。他希望自己的格子阵物尽其用,他打算把自己的格子阵,每两个连在一起,然后在这些1*2的小空间里,做自己爱做的事。

现在大法师希望你能帮助他算出,他有多少的操作空间,啊呸,他有多少的操作方案。注意,每个格子只能属于一个1*2的小空间,并且每个格子必须被划分到一个1*2的小空间。

两种划分方案由如下判定方式来判定是否相同:

如果存在一个格子,在A划分方案中与他相连的格子和在B划分方案中与他相连的格子是不同的,则认为两种划分方案A,B是不同的。

 

输入:

输入一行两个数n、m,用空格隔开。

0<n<=6

30%的数据0<m<=6

70%的数据0<m<=1000

保证n、m中必然有一个是偶数

 

输出:

输出一行方案个数。输出的方案数对1000007取模

 

样例输入:

2 2

样例输出:

2

 

题目分析:状态压缩动态规划,做法不止一种,可以让数字0表示当前位置为横着放的或者是竖着放的下面那块,1代表当前位置是竖着放的上面那块,设dp[i][j]表示第i行状态为j时的方法数,由于当前行的状态最多只受上一行的影响,因此递推的时候只需要考虑相邻两行的状态,根据前面的状态定义,不可能出现相邻行的同一列均为1的情况,判断时直接把两行的状态值与起来即可,然后还需要判断的当前行自身的状态是否合法,直接和上一行求异或即可得到当前行的状态,需要保证连续的两个1之前的0的个数为偶数即可,因为异或后0位置只可能代表横着放的情况(不知道异或什么意思的自行百度),然后横着放的话,空间为1*2,所以偶数个0才能填满

你没看错,代码就这么短 ->

C.疲惫的UCU

接近年末,连日的工作已经使UCU疲惫不堪,他已经无法充满激情的构思那些新鲜有趣的题目(面)了。

于是他开始回忆起了自己的ACM生涯,又想起了近日惨淡的KPI,看着每日的PV稳步下降,真希望是他自己眼花了,他想,要是眼前的这个曲线,是PV的倒数的曲线,该多好啊。

于是他对于整数的倒数的概念,觉得有趣了起来。

所以,你可以帮帮他吗,他想知道最近新上线的一个小众栏目的PV数的倒数的循环节长度是多少。首先这个PV必然是一个正整数,然后这个正整数的倒数,必然是一个循环小数,啊呸,必然是一个有限小数或者循环小数,如果是有限小数的话,循环节长度自然是0,如果是循环小数,循环节长度是多少呢/span>

 

输入:

一个正整数,也就是PV的值

0<PV<10000

 

输出:
一个正整数,即为PV的倒数的循环节,如果是有限小数,则输出0

 

样例输入:

2

样例输出:

0

 

样例输入:

3

样例输出

1


题目分析:首先想到PV中为2或5的全部质因子不会影响循环节(如果有)的长度,原因很简单,2和5本身就能被1除尽,所以先把因子2和5筛掉,然后就是这个数字1必然除不尽,所以直接用1除,其实就是用1乘10对PV取模,然后余数继续乘10对PV取模,反复操作,直到余数再次为1,循环的次数即为循环节的长度,不理解的话可以在纸上模拟运算一下比如1/7的过程。

D.数一数 

题目描述:

T:你知道怎么求1~n中奇数的个数吗/span>

Y:n/2+(n&1)

T:你知道怎么求1~n中3倍数的个数吗/span>

Y:n/3

T:你知道怎么求1~n中的奇数里3倍数的个数吗/span>

Y:n/3 – n/6

T:最后一个问题,你知道怎么求1~n中的奇数里数字3出现的次数吗/span>

Y:呃……

你能帮助Y解决第四个问题吗/span>

 

输入:

第一行为一个正整数T表示数据组数

接下来T行,每行一个正整数n

 

输出:

对每组数据,输出答案

 

样例输入:

3

3

13

33

 

样例输出:

1

2

6

 

数据范围:

1 <= T <= 10

1 <= n <= 10^18

 

题目分析:先不管奇数的限制,对每位考虑当前位上3出现的次数,假设计算到第i位,容易发现当i>1时,答案同时与高位,第i位和低位的数字有关
1)第i位数字小于3, 次数由高位决定, 比如120, 十位出现3的次数完全由百位的1决定, 为1说明3在十位只出现了10次(30~39), 如果是220, 十位出现了20次3 (30~39, 130~139)

2)第i位数字等于3, 次数由高位和低位同时决定, 比如133, 百位的1会决定十位的3出现10次(30~39), 个位的3会决定十位的3出现4次(130~133)

3)第i位数字大于3, 次数由高位决定,比如140, 百位的1会决定十位的3出现20次(30~39, 130~139)
求高位,低位,和当前位的方法推一推即可得到,最后在考虑奇数的限制,若当前位数不是个位,那么要求为奇数,显然直接除2即可,否则3在个位必然是奇数,不作处理

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2017年11月10日
下一篇 2017年11月11日

相关推荐