只能读入数字,不过这个比scanf快很多,并且对于 long long 类型用I64d,还是用 lld 完全忽略,不需要靠考虑在windows,或Linux系统的差别,效率很高!!!
1 int read() 2 { 3 int x=0,f=1;char ch=getchar(); 4 while(ch<'0' || ch>'9'){if(ch=='-')f=-1;ch=getchar();} 5 while(ch>='0'&& ch<='9'){x=x*10+ch-'0';ch=getchar();}//x=(x<<3)+(x<<1)+ch-'0'; 6 return x*f; 7 }
这是 long long 类型读入优化(只要改变函数的类型和x的类型就好了)
1 long long read() 2 { 3 long long x=0,f=1;char ch=getchar(); 4 while(ch<'0' || ch>'9'){if(ch=='-')f=-1;ch=getchar();} 5 while(ch>='0'&& ch<='9'){x=x*10+ch-'0';ch=getchar();} 6 return x*f; 7 }
cin/cout读入优化
ios::sync_with_stdio(false);
输出优化,递归调用
1 void write(int x) 2 { 3 if(x<0) putchar('-'),x=-x; 4 if(x>9) write(x/10); 5 putchar(x%10+'0'); 6 }
输出优化
1 void write(int x) 2 { 3 int num = 0; char c[15]; 4 while(x) c[++num] = (x%10)+48, x /= 10; 5 while(num) putchar(c[num--]); 6 putchar(' '); 7 }