
小技巧
mwhybmj
这个作者很懒,什么都没留下…
展开
-
从左到右将二进制数转化为十进制数
从紫书上看到的,不愧是大神。int readint(int c) { //将二进制数储存到字符数组,c表示要读取c个二进制数。 int v = 0; while (c--) { v = v * 2 + readchar() - '0'; //readchar来读取下一个字符 } return v;}原创 2017-02-09 08:33:12 · 887 阅读 · 2 评论 -
ACM中无穷大,无穷小的设定
如果问题中各数据的范围明确,那么无穷大的设定不是问题,在不明确的情况下,很多程序员都取0x7fffffff作为无穷大,因为这是32-bit int的最大值。如果这个无穷大只用于一般的比较(比如求最小值时min变量的初值),那么0x7fffffff确实是一个完美的选择,但是在更多的情况下,0x7fffffff并不是一个好的选择。很多时候我们并不只是单纯拿无穷大来作比较,而是会运算后再做比转载 2017-04-21 20:27:25 · 1360 阅读 · 0 评论 -
cin cout 输入输出十六进制,八进制
hex : 十六进制oct : 八进制uppercase : 十六进制格式字母变大写showpos : 在正数前显示+号showbase : 十六进制前显示 0x, 八进制前显示0boolalpha:逻辑值1和0用ture和false 输出left : 输出内容靠左right : 输出内容靠右scientific : 科学记数法showpoint : 即使小原创 2017-04-21 15:48:21 · 3401 阅读 · 0 评论 -
进制转换
Problem Description输入一个十进制数N,将它转换成R进制数输出。 Input输入数据包含多个测试实例,每个测试实例包含两个整数N(32位整数)和R(210)。 Output为每个测试实例输出转换后的数,每个输出占一行。如果R大于10,则对应的数字规则参考16进制(比如,10用A表示,等等)。原创 2017-04-11 22:18:58 · 257 阅读 · 0 评论 -
对负数取余的操作
一个数的余数应该是大于等于0,小于该数的绝对值。如 (-5)%3 = 1 =》 3*(-2) + 1 = -5;在程序里可以这么写(n+mod) % mod.原创 2017-04-19 12:41:39 · 2888 阅读 · 0 评论 -
struct中构造函数写法,重载运算符写法
#includeusing namespace std;struct Point{ int x,y; Point(int x=0,int y =0):x(x),y(y) {}}; ostream& operator << (ostream &out, const Point A){ out << A.x << ' ' << A.y<<endl; return out;}Poin原创 2017-04-18 23:55:23 · 3588 阅读 · 0 评论 -
用cout控制输出小数的位数
#include#includeusing namespace std;int main(){ double a = 1.23423; cout << fixed << setprecision(2) << a << endl; return 0;}原创 2017-04-05 23:05:25 · 381 阅读 · 0 评论 -
汉字统计
汉字在计算机中由两个最高位为1的字符储存,即两个‘负数’但是在ubuntu下运行结果就不对,交到oj上却过了。。原创 2017-04-11 20:52:03 · 252 阅读 · 0 评论 -
求最小公倍数或最大公约数
最小公倍数和最大公约数的关系:gcd(a,b) * lcm(a,b) = |a*b|求最小公倍数代码int gcd(int a, int b) { if (b) while ((a %= b) && (b %= a)); return a + b;} 注意溢出问题。原创 2017-04-11 20:29:59 · 254 阅读 · 0 评论 -
getline()函数
当你想读入一整行的数据时(里面可能包含括号)没办法用cin此时需要getline();用法: string line; getline(cin,line);其实getline()还有第三个参数,类型是char。表示读到该字符时停止读入。缺省时是'\n'。原创 2017-04-10 20:34:34 · 385 阅读 · 0 评论 -
sort 函数的用法
时间复杂度:nlog(n)三个参数:1:起始地址。2:终止地址。3:排序方法(如果不写则按从小到大)比较函数的实现:bool cmp (int a,int b){ return a>b}上述比较函数说明的是从大到小排序。 题目:Problem Description输入n(n Input输入数据有多组,每组占一行,每行的第一个数字原创 2017-04-07 10:07:22 · 309 阅读 · 0 评论 -
如何计算程序或某函数运行时间
#include#includeusing namespace std;int main(){ long long start, finish; start = GetTickCount(); //main funciton finish = GetTickCount(); cout << finish - start; //精确到毫秒 return 0;}原创 2017-01-31 19:03:58 · 461 阅读 · 0 评论 -
线性筛打素数表
测试了一百万以内的数据。线性筛大概运行两百万次。时间复杂度O(n)网上流传的高效率打表大概运行100万次。但比较难以理解,所以没有仔细研究。bool visit[n];void getprime(int n) //n是想要得到素数的范围{ visit[0] = 1; visit[1] = 1; //0和1都不是质数 for (int i = 2; i <= n; i++原创 2017-01-16 12:03:53 · 728 阅读 · 0 评论 -
各个系统中的回车换行符
Windows : \r\n Linux : \nMac : \r原创 2017-02-09 10:10:57 · 1856 阅读 · 0 评论 -
离散化
若一些数据本身很大,无法作为下标储存,且数据的作用只和其相对大小有关时,可以将数据进行离散化。举例说明:12345 离散化后变成 : 1 代码:// B为A的副本。sort(B,B+n);int size = unqiue(B,B+n) - B; //size为离散化后元素的个数。for(int i=0;i<n;i++) A[i] = lower_转载 2017-05-07 22:11:52 · 433 阅读 · 0 评论