东南大学第四届逻辑算法程序设计竞赛决赛解题报告
2007-05-16 14:34 老博客哈 阅读(1603) 评论(2) 编辑 收藏 举报东南大学第四届逻辑算法程序设计竞赛决赛解题报告
农夫三拳@seu
本次比赛主要是用来为5月27号的省赛热身的,比较简单,下面做一个简要的说明。
第一题 A 人见人爱A和B
赤裸裸的GCD算法
第二题 B 求正方形和长方形
找规律,推出公式。 设边长为a,b(a<=b) 正方形的是 sigma((a - i)*(b - i)) i:0->i-1
长方形的是(C((a + 1)*(b + 1), 2) - a * C(b + 1, 2) - b * C(a + 1, 2)) / 2
题目求的长方形是除去正方形的,两者相减即可。
第三题 C 赋值问题
扫描每一个等式,让左边字母的赋值状态等同于右边即可(注意,将未赋值的变量赋值给已赋值的变量会造成两个都未赋值)
第四题 D 质数问题
方法多的不胜枚举,最快的当然是交表了,算出一张当前n,<=n小的素数个数表f,然后用f[b] - f[a - 1]即可
第五题 E 自动对款机
这是道好题,考察的是数的-2进制表示。在黑书第二章有讲,tc srm342 1000分也是类似的题目。主要是把转换的规则记号,我抄一下:
“具体而言,根据当前数的正负,奇偶分别做处理。用key来表示当前数的正负,用一个数组来记录当前数的绝对值。每次除法都改变key的值,再按如下方法处理:
正偶数: 直接除以2
正奇数: 减1后除以2
负偶数: 其绝对值直接除以2
负奇数: 将其绝对值+1再除以2”
第六题 F Calls
找规律,可以推出 n等于2的时候是1次,n等于3的时候3次,以后均为2n-4次
第七题 G Catenym
又一道好题,打印欧拉路径。首先按照每个单词的首尾字母建边,可以得到一个包含多边和自环的复杂图,并在同时记录下每个顶点的入度和出度。对于有向图来说,只有保证每个顶点的入度和出度相等(欧拉回路)或者当且仅当存在一个结点入度比出度大1,另外一个结点出度比入度大1(欧拉路径,起点为出度比入度大1的顶点)。 然后判断是否满足欧拉路径的条件,得到欧拉路径起点(若为欧拉回路,任何顶点都可),(这里少了判连通的步骤,是因为在下面dfs的过程中若不连通路径是不可能等于顶点数的),然后使用dfs记录访问的路径,若路径的长度等于顶点数,再在内层循环打印单词
第八题 H Your Ride Is Here
水题,把字母序号乘起来,模47
第九题 I What Time Is It
模拟题,练习拼写英语单词很不错
附上比赛题目