小知识+碎东西
来源:互联网 发布:广州软件开发培训班 编辑:程序博客网 时间:2024/04/28 09:21
/** 今晚还是写点常用或不常用的小知识点吧,一看到算法两个字就头疼 1、 <math.h> 给出两直角边a, b hypot(a, b); //返回斜边长度 2、 scanf("%*d%*d"); //接收两个无用数字 3、 经纬度处理 设地球上某点经度为 l,纬度为 p 则这点空间坐标为 x = cos(p) * cos(l); y = cos(p) * sin(l); z = sin(p); 设这两点坐标为(x1, y1, z1) , (x2, y2, z2); 则它们的夹角为 A = acos(x1*x2 + y1*y2 + z1*z2); 球面距离为 L = A * R; //R为地球半径; 4、 计算几何多边形面积 = 每条边向量的叉乘之和绝对值除以二 float Area = 0.5 * ((x1*y2 - y1*x2) + (x2*y3 - y2*x3) + ... + (xn*y1 - yn*x1)); 例如三角形坐标 (x1, y1) (x2, y2) (x3, y3) Area = 0.5 * ((x1*y2 - y1*x2) + (x2*y3 - y2*y3) + (x3*y1 - y3*x1)); 5、 数学技巧 设一无限循环小数 0.abcdefg... 设不循环部分长度为 c, 循环部分长度为 k 如:0.abcdefg... c(abcd) = 4, k(efg) = 3 //不循环部分为abcd 循环部分为efg -> 0.abcdefgefgefg... 设这个无限循环小数可化为两个数的商 a / b 则 10^(k+c) * (a/b) = abcdefg.efg... 10^(c) * (a/b) = abcd.efg... 两式想减得 10^(k+c) * (a/b) - 10^(c) * (a/b) = abcdefg - abcd; 设abcdefg = all, abcd = num; 则 a/b = (all - num) / (10^c + (10^k-1)) // POJ 1930 6、 数论中一个基本结论 如果一个数 奇数位的数字之和 与 偶数位数字之和 的差能被11整除, 那么这个数可被11 整除,用于求大数能否整除11 如 11715 奇数位数字之和为1+7+5 = 13 偶数位为 1+1 = 2 13 - 2 = 11,则11715能被11整除 7、 图论小知识 设邻接矩阵中两点相连为1 把邻接矩阵k次方后 矩阵中的每个元素(i, j), 表示的是顶点i 到 j 的长度为k 的路径条数。 8、 随机打乱数组中元素 #include <algorithm> //数组b[n] random_shuffle(b, b+n); 9、 内置函数,在函数左端加一个关键字inline inline int max() { } 用于频繁使用的函数,增加效率,在编译时将所调用函数代码嵌入主函数中,增加主函数长度 10、 字符串小知识 strupr(小写转大写); strlwr(大写转小写); 11、 用文件代替标准输入输出 freopen("F:\\OUT.TXT", "w", stdout); freopen("F:\\IN.TXT", "r", stdin); 放在主函数中即可 12、用 pow() 函数转成整数时一定要加个定点小数 m = (int)(pow(2.0, double(n)) + x) //(x 大于 0 小于 1) 13、 #include <math.h> (double)ceil(double); //取上整 (double)floor(double);//取下整 sqrt(double); //求根 14、判断 n 奇偶 (n&1) == 1 为奇 0 为偶 n >>= 1 // 右移一位相当于除二 n <<= 1 // 左移一位相当于乘二 //更快 15、 #include <string.h> strchr(str, ch) //ch字符在str中首次出现的位置 a[6] = "abcde"; strncpy(b, a+i, j); b[j-i+1] = '\0'; //将a字符串中从i 到 j 的字符复制到b 中 strstr(a, b); //判断b是否为a 中的子串为NULL 时不是,反之是 strrev(a); //将a 中字符倒置 strcat(a, b); //将b 连接到a 后 16、 在windows 下ctrl + Z结束,比赛时候是linux下 按 ctrl + D 结束 17、 数学中的PI = 3.1415926.. #define PI acos(-1.0) 18、 输出程序运行时间 #include <time.h> printf("Time used = %.2lf\n", (double)clock()/CLOCKS_PER_SEC); 19、 int最大最小 #include <limits.h> INT_MAX INT_MIN //不建议用,一般 #define int_max = 0x3f3f3f3f 20、 用sscanf(" ", " ", & ); 分离字符串中的数值 如:num[10] = "123"; sscanf(num, "%d", &a); 则 a = 123; 分离"1989.07.15"中的数值 sscanf("1989.07.15", "%d.%d.%d", &a, &b, &c) a = 1989; b = 7; c = 15; //累死了 累死了 睡觉了 晚安*/收藏于 2012-01-10
0 0
- 小知识+碎东西
- 简单东西-小知识
- 工作日常小知识积累---这些东西,不记下就会忘的。
- 小知识
- 小知识
- 小知识
- 小知识
- 小知识
- 小知识
- 小知识
- 小知识
- 小知识
- 小知识
- 小知识
- 小知识
- 小知识
- 小知识
- 小知识
- Spring MVC 两种方式
- ALTERA DE2 之 verilog HDL 学习笔记05-FPGA UART RS232
- python题目——认识*与**,判断函数输出
- 在HTTP请求的header头里面,为什么有的时候有X-Powered-By这个值,有的时候没有呢?
- STL hash_map 底层初探
- 小知识+碎东西
- 11.8 Matlab 学习相关的函数功能
- 僵尸网络的工作原理与防御
- hdu 5237__Base64
- 数据结构之反黄牛火车票订票系统
- Spring MVC开发步骤
- 黑马程序员--OC继承
- Apache Camel的routingSlip简单示例
- 拓扑排序 topsort()