众所周知,在C++中,读入/输出数字都是比字符慢的,小范围内没有影响,但当数字大、多了就会影响效率。
思路:
因为输出字符更快一些,所以我们需要将数字转换成字符输出。
那么转换肯定是倒序的,所以我们就可以用递归来实现倒着转换,正着输出(也可以开栈存储,这里不给出代码)
代码:
#define ll long long
void put(ll x){
if (x < 0) x = -x, putchar('-');//特判,是负数得先转正数
if (x > 9) put(x / 10);
putchar(x % 10 + '0');
}
同样,在一般的OI竞赛中,这样的快读就够用了,更深层的读入程序感兴趣的可以自己学习(我也不会)。
喜闻乐见的整活慢输1.0!
- long long类型比int慢
- cout比printf慢
- STL容器慢
看代码:
#include <bits/stdc++.h>
#define ll long long
using namespace std;
void out(ll n)
{
deque <ll> num;
if(n<0)
{
cout<<'-';
n=n*-1;
}
if(!n)
{
cout<<0;
return;
}//特判
while(n)num.push_back(n%10),n/=10;
while(!num.empty())
{
cout<<num.back();
num.pop_back();
}
return;
}
int main()
{
ll n;scanf("%lld",&n);
out(n);
return 0;
}