![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
竞赛 入门 acm
IceHe何志远
华工IBM实验室桌面虚拟化项目成员/职业体验协会会长&毽球社前会长/过来人教育科技公司市场部前校园主管/奋斗中的执信人。太迟才开这技术博客,想想还是决定尝试一下,到底有没有必要。
展开
-
算法竞赛入门经典 5.3.2字母重排
#include #include #include int len;char word[50][10];char sorted[50][10];int cmp_char(const void *_a, const void *_b){ char *a = (char*)_a; char *b = (char*)_b; return *a - *b;}int cmp_str(原创 2014-05-03 21:17:02 · 366 阅读 · 0 评论 -
算法竞赛入门经典 例3-2蛇形填数
#include #include int arr[10][10];int main(){int n = 4;memset(arr, 0, sizeof(arr));int x = 0;int y = n - 1;int count = arr[x][y] = 1;while (count while (x + 1 arr[++x][y] = ++cou原创 2014-05-04 00:00:43 · 392 阅读 · 0 评论 -
算法竞赛入门经典 习题2-9分数化小数
#include int main(){ int a, b, n; scanf("%d%d%d", &a, &b, &n); int integer = a / b; int *tmp = new int[n]; int count = 0; int r = a % b; while (count < n){ tmp[count++] = r * 10 / b; r =原创 2014-05-04 00:07:43 · 654 阅读 · 0 评论 -
算法竞赛入门经典 3.4.4重新实现库函数
//getch()#include #include int getC(void){ static char buff[100]; static char *bb = buff; static int n = 0; if (n == 0){ n = _read(0, buff, 100); bb = buff; } return (--n > 0) ? (unsigned原创 2014-05-03 21:28:08 · 316 阅读 · 0 评论 -
算法竞赛入门经典 习题3-4简单计算器
#include #include #include void trim(char *dest, char *src){ char *tmp = src; while (*tmp != '\0'){ if (*tmp != ' ' && *tmp != '\t'){ *dest++ = *tmp; } ++tmp; } *dest = '\0';}int mai原创 2014-05-03 21:25:32 · 412 阅读 · 0 评论 -
算法竞赛入门经典 习题3-5矩阵旋转
#include #include void printArr(int a[10][10], int len){ for (int i = 0; i < len; ++i){ for (int j = 0; j < len; ++j){ printf("%d ", a[i][j]); } printf("\n"); }}int src[10][10];int des原创 2014-05-03 21:24:15 · 353 阅读 · 0 评论 -
算法竞赛入门经典 习题3-6十进制转n进制
#include #include int main(){ int radix = 0; int dec = 0; int len = 0; char res[50]; memset(res, '\0', sizeof(res)); scanf("%d%d", &radix, &dec); while (dec > 0){ res[len++] = dec % radix +原创 2014-05-03 21:23:24 · 601 阅读 · 0 评论 -
算法竞赛入门经典 5.2.2高精度阶乘
#include #include const int maxn = 3000;int a[maxn];int main(){ memset(a, 0, sizeof(a)); a[0] = 1; int n = 0; scanf("%d", &n); for (int i = 2; i <= n; ++i){ int c = 0; for (int j = 0; j <原创 2014-05-03 21:18:53 · 324 阅读 · 0 评论 -
算法竞赛入门经典 习题3-7 n进制转十进制
#include int main(){ int radix = 0; int src = 0; scanf("%d%d", &radix, &src); int res = src % 10; src /= 10; int multiple = radix; while (src > 0){ res += src % 10 * multiple; src /= 10;原创 2014-05-03 21:22:41 · 346 阅读 · 0 评论 -
算法竞赛入门经典 5.3.1 “6174”问题
#include #include #include int getNext(int num){ char s[50]; sprintf(s, "%d", num); int len = strlen(s); for (int pass = 1; pass < len; ++pass){ int isSorted = true; for (int i = 0; i < le原创 2014-05-03 21:15:57 · 334 阅读 · 0 评论 -
算法竞赛经典入门 例3-4最长回文串
#include #include #include int main(){ char buff[50] = { "Confuciuss say: Madam, I'm Adam." }; printf("%s\n", buff); int maxLen = 0, maxBeg = -1, maxEnd = -1; for (int i = 0; i < strlen(buff)/*原创 2014-05-03 23:59:27 · 455 阅读 · 0 评论 -
算法竞赛入门经典 浮点数陷阱
//浮点数陷阱#include int main(int argc, char *argv[]){ double i;#define PRECISION 0.0000000000001 for (i = 0; !(i 10 - PRECISION); i += 0.1){ printf("%.12lf\n", i); } return 0;}原创 2014-05-04 00:06:09 · 418 阅读 · 0 评论 -
洗牌算法
1.抽牌法:从一个数组中随机抽出一张牌(然后最末位的牌去补这个位),抽出的牌放到新数组中。2.交换法:每个位置的牌,随机与另外一个位置的牌交换位置。3.插牌法:实现类似于交换法。牌堆里先有1张牌,然后第二张牌可以插两个地方——第一张牌的前或后,第3张牌,有3个地方可插……#include #include #include #include void原创 2014-05-04 00:09:16 · 313 阅读 · 0 评论 -
算法竞赛入门经典 6.1.2 (Y型)铁轨
t原创 2014-05-07 18:19:14 · 583 阅读 · 0 评论 -
算法竞赛入门经典 例题4-2孪生素数
#include #include #include bool isPrime(int x){ assert(x >= 0); if (x == 1) return false; //以下方法中 i * i 可能溢出,所以用新方法 //for(int i = 2; i * i < x; ++i){ // if(x % i == 0){ // return false; //原创 2014-05-03 21:21:41 · 644 阅读 · 0 评论 -
算法竞赛入门经典 运行时间统计
//对运行时间计时#include #include int main(int argc, char *argv[]){ //freopen("input.txt", "r", stdin); //freopen("output.txt", "w", stdout); FILE *fin, *fout; fin = fopen("data.in", "rb"); fout = fo原创 2014-05-04 00:05:08 · 388 阅读 · 0 评论 -
算法竞赛入门经典 5.2.3高精度运算类bign(BigN)
#include #include #include const int maxn = 1000;struct bign{ int len; int s[maxn]; bign(){ memset(s, 0, sizeof(s)); len = 1; } bign(int num){ *this = num; } bign(const char *num){ *this原创 2014-05-03 21:18:10 · 835 阅读 · 0 评论 -
算法竞赛入门经典 习题2-3剩余数定理+最大公约数/最小公倍数
//剩余数定理(韩信点兵)#include int gcd(int a, int b){ if (a < b){ a = a ^ b; b = a ^ b; a = a ^ b; }//交换变量 int tmp = a % b; if (tmp == 0){ return b; } else{ return gcd(b, tmp); }}int main(原创 2014-05-04 00:07:06 · 518 阅读 · 0 评论 -
算法竞赛入门经典 5.4.4多少块土地
#include int main(){ int n = 0; scanf("%d", &n); int v = 0; for(int i = 0; i v += i * (n - 2 - i); } v = n + n * v / 4; int e = 0; for(int i = 0; i e += i * (n - 2 - i)原创 2014-05-03 21:04:48 · 980 阅读 · 0 评论 -
算法竞赛入门经典 习题3-3乘积的末3位
#include #include #include int main(){ char ch = EOF; char in[500]; char buf[500]; memset(in, '\0', sizeof(in)); memset(buf, '\0', sizeof(buf)); int i = 0; while ((ch = getchar()) != '\n' &原创 2014-05-03 21:26:31 · 451 阅读 · 0 评论 -
算法竞赛入门经典 5.2.1有多少位进位
#include int main(){int a, b;while (scanf_s("%d%d", &a, &b) == 2){if (a == 0 || b == 0){return 0;}int c = 0;int n = 0;while (a != 0 || b != 0){c = (a % 10 + b % 10 + c) / 10;if (原创 2014-05-03 21:19:35 · 223 阅读 · 0 评论 -
算法竞赛入门经典5.4.2因子和阶乘
//“除非n太太太大了,否则都可运行”的版本#include #include #include bool isPrime(int x){ int m = floor(sqrt(x + 0.5)); for (int i = 2; i <= m; ++i){ if (x % i == 0){ return false; } } return true;}int m原创 2014-05-03 21:12:27 · 530 阅读 · 0 评论 -
算法竞赛入门经典 例3-1开灯问题
#include #include bool light[100];int main(){ int n = 7; int k = 3; memset(light, false, sizeof(light)); for (int i = 1; i <= k; ++i){ for (int j = 1; j * i <= n; ++j){ light[j * i] = !lig原创 2014-05-04 00:02:07 · 527 阅读 · 0 评论 -
算法竞赛入门经典 例3-3竖式问题
#include #include int main(){ char range[10]; scanf("%s", range); int count = 0; for (int abc = 100; abc <= 999; ++abc){ for (int de = 10; de <= 99; ++de){ int x = abc * (de % 10); int y原创 2014-05-04 00:03:01 · 419 阅读 · 0 评论 -
算法竞赛入门经典 浮点数的最大值和精度
//各类浮点数的最大值和精度#include #include int main(){ printf("%f\n", FLT_MAX); printf("%f\n\n", FLT_EPSILON); printf("%f\n", DBL_MAX); printf("%e\n\n", DBL_EPSILON); printf("%f\n", LDBL_MAX); printf("%原创 2014-05-04 00:04:16 · 738 阅读 · 0 评论 -
算法竞赛入门经典 习题2-10排列数字1~9形成1:2:3的等比数列
#include int main(){ for (int i = 1; i < 10; ++i){//1 i for (int j = 1; j < 10; ++j){//2 j if (j == i) continue; for (int k = 1; k < 10; ++k){//3 k if (k == i || k == j) continue; fo原创 2014-05-04 00:08:30 · 606 阅读 · 0 评论 -
算法竞赛入门经典 5.4.1Cantor数表
#include #include int main(){ int n; while (scanf("%d", &n) == 1){ int k = (int)floor((sqrt(1 + 8.0 * n) - 1) / 2 - 1e-9); int s = n - (1 + k) * k / 2; int numerator = k % 2 == 0 ? k + 2 - s原创 2014-05-03 21:14:17 · 521 阅读 · 0 评论 -
算法竞赛入门经典 习题3-2单词们的平均长度
#include #include #include char* trim(char *str){ while (*str == ' '){ ++str; } return str;}int main(){ int n = 0; int len = 0; int sum = 0; char buf[200]; memset(buf, '\0', sizeof(buf)原创 2014-05-03 21:27:17 · 703 阅读 · 0 评论 -
算法竞赛入门经典 5.1.3找串的最小重复周期
#include #include int main(){ char word[100]; memset(word, '\0', sizeof(word)); scanf("%s", word); int len = strlen(word); for (int period = 1; period <= len / 2; ++period){ bool isFound = tr原创 2014-05-03 21:20:53 · 287 阅读 · 0 评论 -
算法竞赛入门经典 5.4.3果园里的树
#include double area(double x0, double y0, double x1, double y1, double x2, double y2){ double a = x0 * y1 + x1 * y2 + x2 * y0 - x0 * y2 - x1 * y0 - x2 * y1; if(a a = -a; } return a;}原创 2014-05-03 21:08:09 · 1019 阅读 · 1 评论 -
算法竞赛入门经典 6.1.1 卡片游戏
t原创 2014-05-07 16:48:56 · 428 阅读 · 0 评论