摘要:筛法求素数,难点在怎样减少内存,使用C++中的bool却是RE/* 素数槽 C */# include <stdio.h># include <string.h>char a[1299710]; // 有点不伦不类。。。void init(void){ int i, j; memset(a, 0, sizeof(a)); for (i = 2; i < 1299710; ++i) { if (a[i]) continue; j = 2*i; while (j < 1299710) { a...
阅读全文
摘要:排序# include <stdio.h>typedef struct record{ float h, w; char name[50];} stu;int main(){ int N, i, j; stu st[50], tmp; //freopen("in.txt", "r", stdin); //freopen("out.txt", "w", stdout); while (1) { scanf("%d", &N); if (N == 0) break; for (i
阅读全文
摘要:第一次做dp, 一次就ac了, 体验了一把大牛的感觉。。题目描述:一个由n行数字组成的三角形,第i行有2i-1个正整数(小于等于1000),如下: 3 7 1 4 2 4 3 6 28 5 2 9 3 6 2 要求你用笔从第1行画到第n(0 < n ≤ 100)行,从当前行往下画的时候只能在相邻的数字经过,也就是说,如果从一行的一个数往下画,只能选择其左下或者正下或者右下三个数中的一个(如果存在的话),把所有被画起来的数字相加,得到一个和,求能得到的最大的和的值是多少。上例中能得到的最大的和为3 + 7 + 4 + 9 = 23.// 1022 dp# include <stdio
阅读全文
摘要:给定些数字,这些数中只有一个数出现了奇数次,找出这个数。本来用了STL set,MLE了,改为手写式的set(链表),注意一点:插入操作与删除操作不会并存。别人的代码真短。。//1217# include <stdio.h># include <stdlib.h>typedef struct atom{ int key; struct atom *next;} atom; int main(){ int n, t; atom *set, *tmp, *x, *y; while (scanf("%d", &n)==1) { if (n >
阅读全文
摘要:循环周期为5天,只要知道连续的天数,就可以计算出经验值。// 1003 UC Browser# include <stdio.h># define MAXN 105short int expr[] = {0,1,3,6,10,15};int main(){ int T, n, tot, cnt, i; char a[MAXN]; scanf("%d", &T); while (T > 0) { scanf("%d%s", &n,a); tot = 0; for (i=0; i<n; ++i) { ...
阅读全文
摘要:给出两个长为n的升序序列S1和S2,求两序列合并并排序后的中位数。1 <= n <= 10 ^ 5类似于merge sort的merge过程(可以省掉一个数组,边输入边计算)// 1212# include <stdio.h># define MAXN 100000int a[MAXN+2],b[MAXN+2];int main(){ int n, i, j, k, cnt; while (scanf("%d", &n)==1) { cnt = 0; for (i=0;i<n;++i) scanf("%d",&
阅读全文
摘要:C(m,n) =m!/((m-n)!n!)将组合数C(m,n)写成二进制数,这个二进制数末尾有多少个零?* 自然数可以进行质因数分解,质因子2的指数即相应二进制末尾零的个数; 将各个数二进制末尾0的个数累加,得到阶乘数末尾0的个数。优化:# include <stdio.h>int f[] = {0,1,3,7,15,31,63,127,255,511};int main(){ int T, m, n, i, ans; scanf("%d", &T); while (T-- > 0){ ans = 0; scanf("%d%d"
阅读全文