题目差不多就是省赛的难度了,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进行处理,非常感谢!