快读原理

单个字符的读入速度要比读入数字快,因此我们以字符的形式先读入,然后处理计算转为数字。

代码

inline int read(){
register int x = 0, t = 1;
register char ch=getchar(); // 读入单个字符到寄存器
while(ch<'0'||ch>'9'){
if(ch=='-')
t=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9'){
x=(x<<1)+(x<<3)+(ch^48); // 移位与异或
// 第十行可以换成 x = x * 10 + ch - '0'
ch=getchar();
}
return x*t;
}

其中涉及到的移位运算、异或、inline、register

位运算、寄存器涉及计算机组成原理

第十行 x=(x<<1)+(x<<3)+(ch^48); 其中 << 为移位 ^ 为异或

移位

简单来说移位就是二进制数左移(<<) 或 右移(>>) x位 十进制看来就是乘/除2

其中 x << 1 == x * 2; x << 3 == x * 2 * 2 * 2; 二者相加也就是 x * 10;

位或

就是数学里次方的符号 ^ 也是format中格式居中对齐的符号表示

简单说就是 "同0 异1" 相同的两个数异或为0 不同的异或为1

ch^48 相当于 ch -= '0'

inline

简单来说就是类似 #define 但是能更进一步的定义函数 能够提升效率

register

意思是将变量放入寄存器,大幅提升效率

注意 : 读入中包含大量无用空格时 快读不太适用

附 快写代码

inline void write(int x)
{
if(x<0){
putchar('-');
x=-x;
}
if(x>9)
write(x/10);
putchar(x%10+'0');
}

最新文章

  1. YII2.0 Activeform表单组件的使用方法
  2. 点击document隐藏某个div
  3. usb驱动开发17之设备生命线
  4. 正向代理与反向代理的区别【Nginx读书笔记】
  5. 洛谷 P1541 乌龟棋 Label:O(n^4)的dp
  6. 源码安装apache
  7. android重要的对象
  8. 在无人值守程序(服务)中调用Microsoft Graph
  9. TensorFlow实现XOR
  10. python编程实战
  11. java中的线程中断
  12. 业务开发(二)—— Spring框架
  13. Codeforces Round #540 Tanya and Candies 预处理
  14. poj 2777线段树应用
  15. Chapter 6 面向对象基础
  16. EXP-00032: Non-DBAs may not export other users
  17. Javacript实现倒计时
  18. php对数组操作的函数
  19. dp好题 玲珑杯 Expected value of the expression
  20. Java虚拟机内存详解

热门文章

  1. 7.11 NOI模拟赛 graph 生成函数 dp 多项式
  2. 4.9 省选模拟赛 圆圈游戏 树形dp set优化建图
  3. MyBatis-Plus使用(1)-概述+代码生成器
  4. /usr/bin/docker-current: Error response from daemon: driver failed programming external connectivity on endpoint naughty_wozniak (444e26e0a2a3adb1ff88177ead86099ad64c0406afcec179ce7cfeef8ffa2d5c): (i
  5. “随手记”开发记录day12
  6. Java不可不知的泛型使用
  7. mongodb 4.0副本集搭建
  8. 智能问答中的NLU意图识别流程梳理
  9. C#LeetCode刷题-堆
  10. 深度强化学习:Deep Q-Learning