是输入输出的小技巧和细节们
scanf 的读入规则
- 如果上一个读入的是数字,本次就会停留在缓冲区中第一个非数字字符处。例如:
第一次 scanf("%d"), 缓冲区指针会停留在[空格]处
第二次 scanf("%d"), 缓冲区指针会停留在 \n 处
- 对应技巧:
1 2 3 4 5
A 1 5 4
M 3 5 1
A 1 5 4
例如上面这种的,要读入那个字母,scanf("%s",in); in[0]就是辣个字母拉。
数字范围
- int的范围有符号的是2^31,十进制是2147483648 , 1e9
- long long 的范围有符号的是2^62,十进制是4611686018427387904 , 1e18
内存大小
- 位(bit) 是电子计算机中最小的数据单位。每一位的状态只能是0或1。
- 字节(Byte) 8个二进制位构成1个字节
-
8bit(位)=1Byte(字节)
1024Byte(字节)=1KB
1024KB=1MB
1024MB=1GB
- int一般是4个字节,ll八个字节
printf技巧
- printf ( " %.0lf " , x ) 输出浮点数的整数部分,省略全部小数部分(以及小数点)
- 上面这样输出貌似比直接强制类型转换输出精度要高
lower_bound和upper_bound
- 怎么寻找一个小于等于x的数:upper_bound(begin,end+1,x) - begin -1
- lower是找第一个>=x的数
- upper是找第一个>x的数