C/C++中最快、最简洁的read()快读(卡常数)方法

article/2025/10/24 16:00:02

别人的方法

遇到数据较多的题目时,用scanf或者cin肯定是不够快的。由于getchar()有速度快的特性,有人手打了这样的快速读入函数:

inline void read(int& a)
{int s = 0, w = 1;char ch = getchar();while (ch < '0' || ch>'9'){if (ch == '-')w = -1;ch = getchar();}while (ch >= '0' && ch <= '9'){s = s * 10 + ch - '0';ch = getchar();}a = s * w;
}

这样虽然可以做到用scanf()函数5倍的速度读入任意整数,但还是不能处理数据极大时的情况 写起来太麻烦。于是……

我的方法

(11.30更新:把左移运算改成了乘法运算)
很简单:

inline void read(unsigned long long &a){a=0; char c;while((c=getchar())<48);do a=*10+(c^48);while((c=getchar())>47);
}

这种办法仅适用于不大于 2 64 2^{64} 264 的正整数。

是不是有点失望?别急着走,前方高能!

如果不存在名为a、c的变量且要读入的变量原本为零且数据能保证每两个有效数据之间只用一个空格或者换行(也可以是其他ACSII小于48的字符)分割, 代码甚至可以省略成这样:

#define read(a) {char c;while((c=getchar())>47) a=a*10+(c^48);}

什么,你还能写出更短的?好吧,我服你。。。

测试程序

#include<cstdio>
#define read(a) {char c;while((c=getchar())>47) a=a*10+(c^48);}
int main()
{int n;read(n);printf("%d\n\n",n);return main();//无限循环 
}

运行结果

运行结果

应用举例

洛谷P1376

#include<iostream>
#define read(x) {x=0;char z;while((z=getchar())<48);do x=x*10+(z^48);while((z=getchar())>47);}
using namespace std;
int main(){long long n,s,c,y,a,m;read(n);read(s);read(c);read(y);m=c;a=c*y;for(int i=1;i<n;i++){read(c);read(y);a+=(m=(m+s<c)?(m+s):c)*y;}printf("%lld",a);return 0;
}

有了快读我就是No.1(坏笑)
测试点信息
好像也没什么好说的了。下次更新我身为一个初一蒟蒻的的noip游记吧,点个关注它不香吗😂


http://chatgpt.dhexx.cn/article/G9BgHn8t.shtml

相关文章

I2C通信

I2C总线是PHLIPS公司推出的一种串行总线&#xff0c;它只有两根双向信号线。一根是数据线SDA&#xff08;serial data I/o&#xff09;&#xff0c;另一根是时钟总线SCL&#xff08;serial clock&#xff09;。 如下图所示&#xff0c;I2C总线上可以挂接多个器件&#xff0c;而…

Linux 文件编程 read函数

read函数的功能是向以打开的文件读取数据。 read函数需要包含头文件 &#xff1a;#include <unistd.h>。 read函数的原型为&#xff1a; ssize_t read(int fd, void *buf, size_t count); 其中&#xff0c;fd为文件描述符&#xff1b;buf表示读出数据缓冲区地址&…

c语言read有什么作用,c语言read函数读到什么结束

linux下c语言编程read()函数的问题 返回-1的时候&#xff0c;要根据错误码来判断原因&#xff0c;请看下面的函数说明&#xff1a; 表头文件 #include 定义函数 ssize_t read(int fd,void * buf ,size_t count); 函数说明 read()会把参数fd 所指的文件传送count个字节到buf指针…

深入了解C read/write函数和cat命令实现

1&#xff0e;文件描述符 文件描述符&#xff08;file descriptor&#xff09;通常是一个小的非负整数&#xff0c;内核用以 标识一个特定进程正在访问的文件。当内核打开一个现有文件或创建一 个新文件时&#xff0c;它都返回一个文件描述符。在读、写文件时&#xff0c;可以使…

极路由最新刷机教程

本文参考&#xff1a;点击打开链接 前提条件 极路由1s、2、3、4&#xff0c;新老版本都可以&#xff0c;固件版本要求9006~9018。但实际上9019以及最新的1.0.xxx也都支持&#xff0c;只不过必须使用ss插件直达页面去操作ss&#xff0c;ss功能完美&#xff0c;就是界面有点简陋。…

极路由(极壹S)HC5661安装OpenWrt及救砖过程

极路由(极壹S)HC5661安装OpenWrt及救砖过程 文章目录 极路由(极壹S)HC5661安装OpenWrt及救砖过程1.免插件离线Root1.1 点击 获取local_token1.2 点击 获取uuid1.3 获取cloud token1.4 开启ssh1.5 永久开启ssh 2.刷不死uboot(breed)2.1 核对路由器型号2.2 下载breed固件2.3 刷入…

ssh登录极路由后台_OpenWrt刷机详细流程(极路由)

要想深入理解某个软件,首先熟悉其安装步骤,亲自感受软件的强大。OpenWrt是Linux的一个发行版,是一个独立的操作系统,主要运行在嵌入式设备中,由于嵌入式硬件种类繁多,并且稍微不慎就可能导致板子变砖,这给开发者带来了很大麻烦。 本篇文章以极路由为例,详细记录了OpenW…

浙大玉泉校区路由器L2TP设置(极路由1s)

我的宿舍里的ZJUWLAN信号太不稳定了&#xff0c;所以打算用有线。房间里只有一个有线口&#xff0c;还离的很远&#xff0c;所以打算连个路由器&#xff0c;然后用wifi连接。 步骤如下&#xff1a; 申请IP 浙江大学学生公寓服务网&#xff1a; http://service.chinasinew.co…

极路由云平台倒闭,路由器免插件离线ROOT方法

极路由云平台停服&#xff0c;离线root方法 免插件离线ROOT方法 访问&#xff1a;http://www.hiwifi.wtf/ 步骤 1. 点击 获取local_token 注意该网页不要关闭&#xff0c;后续获得 cloud token&#xff0c;填入并提交&#xff0c;即可临时获得ssh权限 即&#xff1a;http…

极路由1s HC5661 编程器救砖教程

说明&#xff1a;极1s如果刷错了固件&#xff0c;比如刷了HC5661A之类的&#xff0c;那么&#xff0c;会出现亮不灯的死机情况&#xff0c;这个时候说明固件引导已经刷坏了&#xff0c;只能拆机用编程器救砖或者返厂维修。如果采用编程器的话&#xff0c;因为没有备份&#xff…

极路由器1S,HC5661A刷breed再刷老毛子华硕

极路由器1S-HC5661A刷breed再刷华硕老毛子&#xff0c;再次编辑补充HC5661不带A的教程 特别提醒&#xff1a; 本教程是教授大家如何对【极路由器1S&#xff0c;HC5661A】以及【hc5661不带A的】进行刷机&#xff0c;载入breed并刷入华硕老毛子固件&#xff08;以下简称老毛子&a…

更新极路由器1S,HC5661A刷breed再刷老毛子华硕教程

更新极路由器1S-HC5661A刷breed再刷老毛子老毛子教程&#xff0c;再次编辑附加HC5661不带A的 特别提醒&#xff1a; 2021年1月1日起&#xff0c;极路由器官网www.hiwifi.com域名到期&#xff0c;云平台正式关闭&#xff0c;之前我发布的极1S刷机教程是基于云平台获取root权限的…

极路由刷个人编译的openwrt固件全过程

说明 以下是极1s刷机的整个流程&#xff0c;包括openwrt 极路由固件的编译和升级流程&#xff0c;主要是为了方便发烧友或者开发人员。 准备工作 极壹S(型号HC5661)一台 串口板和串口线(如果是高级玩家) 电脑、网线等软件(vmware、tftpd、linux编译环境) 网络配置 极路由为…

极1s刷Padavan改华硕[N14U N54U]固件

打开极路由的开发者模式 打开开发者模式 登陆极路由的后台管理界面&#xff0c;点击云插件&#xff0c;进入到极路由云插件管理后点击路由信息&#xff0c;然后在最下面点击开通开发者模式&#xff0c;这里需要你放弃极路由的保修以及安装APP等一系列的工作&#xff0c;大家照…

在极路由极1S上使用entware

目录 打开ssh功能安装entware使用感想备份和还原entware注意程序开启启动参考文章 本想在极1S上安装些程序&#xff0c;结果登录ssh后发现系统自带的opkg有限制&#xff0c;即使更改为openWRT的源也不能安装&#xff0c;说各种不兼容。于是打算装entware。 entware是面向 Linux…

Drcom下如何使用路由器上校园网并开启WIFI(以广东工业大学、极路由1S HC5661A为例)

免责声明&#xff1a; 在根据本教程进行实际操作时&#xff0c;如因您操作失误导致出现的一切意外&#xff0c;包括但不限于路由器变砖、故障、数据丢失等情况&#xff0c;概不负责&#xff1b;该技术仅供学习交流&#xff0c;请勿将此技术应用于任何商业行为&#xff0c;所产生…

极路由1S HC5661A 刷入不死u-boot(breed)加刷潘多拉固件教程

原文来自&#xff1a;新版极路由1S&#xff08;HC5661A&#xff09;刷潘多拉加SS配置教程 不死uboot(breed)如何使用 下文是以原文为基础&#xff0c;更详细也更适合小白的整合版。 注意&#xff1a;本贴是新版的白盒极路由1S&#xff08;HC5661A&#xff09;教程&#xff…

极路由s1有wds_极路由1、1s等机型刷OpenWrt--成为真正的极客

0x00&#xff1a;我为什么买极路由 买极路由的时候&#xff0c;他们说这是个给极客打造的智能路由&#xff0c;一开始还因为国际版&#xff0c;被gov直接请去喝茶了。 当时觉得&#xff0c;这玩意能给APPStore加速&#xff0c;还能屏蔽广告&#xff0c;简直NB。那时候也没啥钱&…

极路由1S 开启临时ssh 并刷breed成功

手上有一台别人给的 极路由1s&#xff0c;刷的是不知名版本的openwrt版本&#xff0c;也无法远程ssh&#xff0c;也就无法刷新的固件玩玩。 以前没接触过软路由和路由系统&#xff0c;找了很多资料&#xff0c;都没法正常获取ssh权限。 折腾了一两天&#xff0c;结果发现我刷的…

极路由 刷linux,记一次 极路由1S HC5661 TTL root 刷 U-BOOT 不死固件 及 爱快固件-20200320更新...

18.png (15.32 KB, 下载次数: 8) 2016-7-14 16:55 上传 2、用PUTTY的SSH类型登陆192.168.199.1,端口号:22。login as输入root,password输入admin。 备份原厂固件,需要插入SD卡(不需要刷回原厂固件的就直接略过吧):root@Hiwifi:/#cat/proc/mtd #列出路由器分区情况m…