如何在c中获得快速输入/输出?我一直在使用scanf和printf但是在编程竞赛中我得到了“超出时间限制”。请指出哪些函数用于c中的快速I / O.
#include<stdio.h>
#include<math.h>
main()
{
int i,j,flag,num,t,a[500000],k;
unsigned int n;
scanf("%d",&t);
if(t<=10)
{
while(t!=0)
{
scanf("%d",&n);
if(n<=70000)
{
i=1;flag=1;num=3;a[0]=2;k=0;
while(i<n)
{
for(j=3;(j<=sqrt(num))&&(flag==1);j++)
{
if(num%j==0)
{
flag=0;
}
}
if(flag==1)
{
a[i]=num;
num=num+2;
flag=1;
printf("%d",a[k]);
k++;
i++;
}
else
{
flag=1;
num=num+2;
}
}
}
printf("%d",a[k]);
t--;
printf("\n");
}
}
}
这是我得到“超出时间限制”的代码
答案 0 :(得分:3)
你怎么知道,你的程序是I / O绑定的?像http://codility.com这样的编程竞赛通常会指定所需的时间复杂度,如O(N)。如果您提交的复杂度为O(N ^ 2)的算法,即使您使用世界上最快的I / O库,也无法获胜。
答案 1 :(得分:0)
printf / scanf是缓冲I / O.它首先捕获缓冲区中的I / O.您可以使用fflush()函数刷新内存中的缓冲区。
答案 2 :(得分:0)
fgets
和puts
应该比格式化的IO快得多。