读入优化
Posted very-beginning
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了读入优化相关的知识,希望对你有一定的参考价值。
首先,读入优化这里是只是针对整数,getchar读字符是非常快的,所以我们就用getchar了。(下面都假设输入的数为x)
负数处理
很简单,用一个标志变量f,开始时为1,当读入了’-’时,f变为-1,最后x*=f即可
绝对值部分处理
显然getchar每次只能读一位,所以,每当读了一位时x*=10,为这一位“留位置”。
举个例子:现在读入了123,x为123,再读入了一个4,x*=10,变为了1230,现在它的最后一位空出来了,正好留给4,x+=4,x就变为了1234,当然,这里的’4’是char类型,需要减去’0’才是4,即:x=x*10+s-‘0‘(s为当前输入的字符)
1 #include <cstdio> 2 #include <cstring> 3 4 using namespace std; 5 int read() 6 { 7 int x = 1,a = 0; 8 char ch = getchar(); 9 while(ch < ‘0‘ || ch > ‘9‘){//如果读进来的不是数字…… 10 if(ch == ‘-‘)x = -1;//判断负号 11 ch = getchar(); 12 } 13 while(ch <= ‘9‘&&ch >= ‘0‘){//如果读进来的是数字…… 14 a = a * 10 + ch - ‘0‘; 15 ch = getchar(); 16 } 17 return x*a; 18 } 19 int main() 20 { 21 while(1){ 22 int a = read(); 23 printf("%d ",a);} 24 return 0; 25 }
以上是关于读入优化的主要内容,如果未能解决你的问题,请参考以下文章