acm寒假赛
文章平均质量分 60
ACM者
这个作者很懒,什么都没留下…
展开
-
poj3080解题报告
思路:先按字符串的长度由短到长进行快排。枚举第一个字符串的不同长度子串,判断她是否为下面多有的公共子串?如果是的话,那么我们就表明找到,则比较其长度,如果比已经找到的串长,那么就替换结果串 否则按字典序比较。取字典序考前的,就可以。 编程语言:C++ 错误:曾因数组越界WA了2次,现已改正 代码如下: #include #include #include using namespac原创 2014-01-19 17:01:04 · 465 阅读 · 0 评论 -
POJ2080解题报告
思路: 星期几很容易求,只要对7求模就知道,不过2000年1月1日是星期六,星期几的字符数组第一个要注意。至于年月日,就是用昨天数减去每一年的天数,减多少年year就是多少,month也一样,最后天数要加1. 编程语言:C语言 代码如下: #include int fn(int x) { if ((x % 4 == 0 && x % 100 != 0) || x % 400 ==原创 2014-01-19 17:32:07 · 535 阅读 · 0 评论 -
POJ1555解题报告
思路:方法很笨,一项一项判断,但有一点需要注意那就是输出的时候的第一项,虽然题目说'+'和'-'前后都有空格,但若第一个字符为负的时候,'-'的前后是没有空格的. 编程语言:C语言 代码如下: #include int fn(int x) { if ((x % 4 == 0 && x % 100 != 0) || x % 400 == 0) return 1; retur原创 2014-01-19 17:19:51 · 689 阅读 · 0 评论 -
hdu1032解题报告
思路:题的大意是输入两个数(注意,这里没有说第一个数一定要小于第二个数),然后对这两个数之间的所有整数包括端点的数,进行一种规律运算,并求出运算的次数,比较所有的数规律运算次数,输出最大的 编程语言:C语言 代码如下: #include void main() { __int64 n, m, i, temp; while (scanf("%I64d%I64d", &n, &m)原创 2014-01-19 17:44:39 · 623 阅读 · 0 评论 -
hdu1084解题报告
思路:结构体排序题 编程语言:C语言 代码如下: #include struct Test { int p; int id; int h; int m; int s; int score; }; int main() { struct Test test[100]; int n; while (scanf("%d", &n) && n >= 0) {原创 2014-01-19 19:00:11 · 534 阅读 · 0 评论 -
hdu1157解题报告
思路:题目的意思就是求中位数。 编程语言:C语言 代码如下: #include void qsort(int *a, int l, int r) { int x = a[l]; int i = l, j = r; if (l >= r) return; while (i { while (i= x) j--; a[i] = a[j]; while (原创 2014-01-19 19:19:30 · 638 阅读 · 0 评论 -
hdu1128解题报告
思路:由于该题是求一个数是不是“自身数”,而定义一个数是不是“自身数”的根据就是是否有祖先,又因为一个数的祖先一定比这个数要小,所以这就和筛选法很像了。 编程语言:C语言 代码如下: #include int sum(int n) { int s = n; while (n) { s += n % 10; n /= 10; } return s; }原创 2014-01-19 16:30:07 · 474 阅读 · 0 评论 -
POJ1401解题报告
思路: 这一题要求的是N!中末尾0的个数,其实也就是所包含因子10的个数。10=5*2,因子10的个数也就是因子2的个数与因子5的个数中较小的那个,N!=1*2*3...*N,其中2的因子个数一定不少于5的因子个数,所以要求的其实就是N!中所包含的5的因子个数。 求 P^x || N!,这个算法在集训手册推荐的那本《初等数论》上64页有证明,其中x的值是1--N之中所有p的倍数的个数原创 2014-01-19 19:09:12 · 854 阅读 · 0 评论 -
hdu1196解题报告
思路:位运算 编程语言:C语言 代码如下: #include int main() { int A, t; while (scanf("%d", &A), A) { t = 1; while (A) { if (A % 2 == 1)break; A /= 2; t *= 2; } printf("%d\n", t);原创 2014-01-19 19:31:49 · 460 阅读 · 0 评论