C++ 读入优化&输出优化
读入优化:读入优化只是针对整数,由于getchar()读字符非常的快,所以采用getchar()来进行读入,下设输入的数为x
- 负数处理:
用一个标志变量f,开始时为1,当读入了'-'时,f变为-1,最后x*=f即可 - 绝对值部分处理:
getchar()每次只能读一位,所以每当读了一位s时,x*=10,为s留位置,由于s为字符,需要减去'0'才能转为整数
即:x=x*10+s-'0' - 关于细节:
- 很多时候有多余的空格或者其它的一些无关字符输入,处理时需要注意排除
- 代码:
void read(int &x)//'&'表示引用,也就是说x是一个实参,在函数中改变了x的值就意味着在外面x的值也会被改变
{
int f=;//标记正负
x=;//归零(这就是潜在bug,有可能传进来时x没有归零)
char s=getchar();//读入第一个字符
while(s<''||s>'')//不是数字字符
{
if(s=='-')//不能直接把f=-1,有可能输入的不是'-'而是其他乱七八糟的东西
f=-;
s=getchar();//继续读
}
while(s>=''&&s<='')//是字符(一旦不是字符就意味着输入结束了)
{
x=x*+s-'';
s=getchar();
}
x*=f;//改变正负
} - 可以用来装逼的代码:
#define num s-'0'
void read(int &x){
char s;
x=;
bool flag=;
while(!isdigit(s=getchar()))
(s=='-')&&(flag=true);
for(x=num;isdigit(s=getchar());x=x*+num);
(flag)&&(x=-x);
}这段代码里面,isdigit()是用判读一个字符是否是数字字符的,需要#include<cctype>,&&是短路运算符,所以第一个条件不满足时第二个条件直接跳过了。
输出优化:putchar()输出字符很快,所以用putchar()来输出
- 负数处理:
如果是负数,直接putchar('-'); x=-x; 即可 - 绝对值部分处理:
为了极致的速度,用递归,递归下一位,即x/10,然后,要注意边界,只有当x>9才能继续递归,否则输出x%10,即putchar(x%10+'0'),把int变为char,+'0'即可 - 代码:
void write(int x)//这里当然不用实参
{
if(x<)//负数
{
putchar('-');
x=-x;
}
if(x>)//只要x还是2位数或更多就继续分解
write(x/);//这里递归完后栈里面x的每一位是倒过来的
putchar(x%+'');//输出(要把int型变为char型,加'0'即可)
}
C++ 读入优化&输出优化的更多相关文章
- 【CSP模拟赛】天才绅士少女助手克里斯蒂娜(线段树&读入优化&输出优化)
题面描述 红莉栖想要弄清楚楼下天王寺大叔的显像管电视对“电话微波炉(暂定)”的影响.选取显像管的任意一个平面,一开始平面内有个n电子,初始速度分别为vi,定义飘升系数为 $$\sum_{1\leqsl ...
- 读入优化&输出优化
读入优化 int read() { ; ') ; '; ') num=num*+c-'; return ff*num; } 输出优化 void write(int x) { ) { putchar(' ...
- c++ 读入优化、输出优化模板
0. 在有些输入数据很多的变态题中,scanf会大大拖慢程序的时间,cin就更慢了,所以就出现了读入优化.其原理就是一个一个字符的读入,输出优化同理,主要使用getchar,putchar函数. 1. ...
- C++中的读入输出优化及清新脱俗的宏命令
C和C++有了#define,从此它就变了模样 宏命令就是#define,#if,#error之类的 本文主要介绍宏命令和相关的骚操作 读入输出优化 inline int read() { int a ...
- 读入输出优化_C++
当我们考试时遇到大量的读入或者输出时,这些代码会耗费许多运行程序的时间,导致TL 本来 log2n 的算法因为读入被卡成线性的就太不划算了,所以我们这里要采用读入输出优化 getchar 和 putc ...
- C++读入输出优化
读入输出优化虽然对于小数据没有半点作用,但是对于大数据来说,可以优化几十ms. 有时就是那么几十ms,可以被卡掉大数据的点 读入优化 int read() { int x=0,sig=1; char ...
- Android 项目Log日志输出优化
概述 Android开发过程中经常需要向控制台输出日志信息,有些人还在用Log.i(tag,msg)的形式或者system.out.println(msg)方式吗?本篇文章对日志信息输出进行优化,以达 ...
- c/c++性能优化--- cache优化的一点杂谈
之前写了一篇关于c/c++优化的一点建议,被各种拍砖和吐槽,有赞成的有反对的,还有中立的,网友对那篇博客的的评论和吐槽,我一个都没有删掉,包括一些具有攻击性的言论.笔者有幸阅读过IBM某个项目的框架代 ...
- Android 性能优化---布局优化
Android 性能优化---布局优化 Android 布局绘制原理 布局加载过程 setContentView() --> inflate() -- > getLayout()(I/O操 ...
随机推荐
- golang实现 快速排序算法
快速排序算法原理: b站https://b23.tv/uJqRYN package main import "fmt" //[]int{1,2,3,4,5,6,7,8} func ...
- MyKTV系统项目的感想
不粉身碎骨,何以脱胎换骨! 3月11号,我们迎来S1的尾巴.这期间有温暖,默契,有项目.一切刚刚好.刚刚正式接到KTV这个微微型的项目的时候,还是很害怕的,虽然老师在前两天就已经提到也讲到,KTV系统 ...
- 45道Promise面试题
来看看通过阅读本篇文章要点: Promise的几道基础题 Promise结合setTimeout Promise中的then.catch.finally Promise中的all和race async ...
- IntelliJ Idea如何解决Could not autowire. No beans of 'xxxx' type found的错误提示
问题描述 在idea中进行开发时,经常会遇见Could not autowire. No beans of 'xxxx' type found的错误提示,这样的是不影响程序编译和运行的,但是看起来会很 ...
- hive命令大全
1.等值比较: =语法:A=B操作类型:所有基本类型描述: 如果表达式A与表达式B相等,则为TRUE:否则为FALSEhive> select 1 from iteblog where 1=1; ...
- IDEA的externel tool配置Javap -c 命令
1.ctrl+alt+s打开设置界面,找到Tool-> External Tools 点击 +来增加一个新的外部工具. 在tool setting 的Program输入工具的路径,可以插入宏,比 ...
- onlyoffice在线编辑
一.安装ONLYOFFICE Document Server 二.集成onlyoffice的二次开发 三.故障排除: 四.缺陷 五.总结 ONLYOFFICE Document Server提供文档协 ...
- Jmeter 常用函数(24)- 详解 __digest
如果你想查看更多 Jmeter 常用函数可以在这篇文章找找哦 https://www.cnblogs.com/poloyy/p/13291704.htm 作用 在特定的哈希算法中返回加密的值,并带有可 ...
- 还在问什么是JavaScript构造函数、实例、原型对象以及原型链?看完这篇你就懂
1概述 ES6, 全称 ECMAScript 6.0 ,2015.06 发版.在ES6之前,对象不是基于类创建的,而是用一种称为构造函数的特殊函数来定义对象和它们的特征. 2构造函数 构造函数是一种特 ...
- 【Flutter 实战】动画序列、共享动画、路由动画
老孟导读:此篇文章是 Flutter 动画系列文章第四篇,本文介绍动画序列.共享动画.路由动画. 动画序列 Flutter中组合动画使用Interval,Interval继承自Curve,用法如下: ...