遇到一道读入超级大的题,scanf就爆了,cin关同步也不行。
Code:cin取消同步。
#include<iostream>
using namespace std;
int main()
{
cin.sync_with_stdio(false); //取消stdio同步
int n; cin>>n;
}
getchar()读入优化:
int read(int &n)
{
char ch=' ';int q=0,w=1;
for(;(ch!='-')&&((ch<'0')||(ch>'9'));ch=getchar());
if(ch=='-')w=-1,ch=getchar();
for(;ch>='0' && ch<='9';ch=getchar())q=q*10+ch-48;
n=q*w; return n;
}
putchar()输出优化:
void write(int x) {
if(x == 0) { putchar('0'); return;}
if(x < 0) x = -x, putchar('-');
int d[10]; d[0] = 0; while(x) d[++ d[0]] = x % 10, x /= 10;
for(; d[0]; d[0] --) putchar(d[d[0]] + '0');
}
本文探讨了在处理大量输入时,为何cin关闭同步比scanf更快,并提供了使用getchar()进行读入优化和putchar()进行输出优化的模板。针对大型数据输入的问题,cin同步关闭可以提高效率,而getchar()和putchar()作为替代方法在某些场景下更为适用。
1万+

被折叠的 条评论
为什么被折叠?



