2009-06-21 19:33:36來源不明

優化輸入的函式

用法:

將這些程式碼貼上去你的code

再指定m=input();即可

m是你想(型態自行修改)

使用注意:

1.請別放在最外層的輸入(如果要一直輸入的話),因為沒辦法判斷EOF結尾
2.型態請自行修改

NPSC 之類的超大筆輸入 優化之後可加快很多唷!!

EX:

int t,m;
while(scanf("%d",&t)==1)
  while(t--)
    {
     
m=input();
      printf("%d\n",m);
    }

/************************/

正整數

/************************/

long long int input()  
{  
  char cha;  
  unsigned long long int x=0;  
  while(cha=getchar())  
     if(cha!=' '&&cha!='\n') break;  
  x=cha-48;  
  while(cha=getchar())   
    {  
     if(cha==' '||cha=='\n') break;  
      x=x*10+cha-48;  
    }  
    return x;  
}

/*************************/

±整數

/************************/

long long int input()  
{  
  char cha;  
  unsigned long long int x=0,flag=1;  
  while(cha=getchar())  
     if(cha!=' '&&cha!='\n') break;  
   if(cha!='-')
       x=x*10+cha-48; 
   else flag=-1;  
  while(cha=getchar())   
    {  
     if(cha==' '||cha=='\n') break;  
      x=x*10+cha-48;  
    }  
    return x*flag;  
}

/************************/

±浮點數

/************************/

double point()
{
  char cha;
  double poi=0,num=1;
    while(cha=getchar())   
    {  
     if(cha==' '||cha=='\n') break;  
     num=num/10;
     poi=poi+(cha-48)*num;
    }  
    return poi;
}        
double input()  
{  
  char cha,flag=1;  
  double x=0;  
  while(cha=getchar())  
     if(cha!=' '&&cha!='\n') break;  
   if(cha!='-')
       x=x*10+cha-48; 
   else flag=-1;
  while(cha=getchar())   
    {  
     if(cha==' '||cha=='\n') break;  
     if(cha=='.')
      {
        x=x+point();
        break;
      }
       x=x*10+cha-48; 
    }  
    return x*flag;
}

下一篇:For

路人乙 2013-07-28 22:58:04

那個你的 優化輸入
不適用於zj的a587

鴨子 2010-07-01 00:02:03

我沒記錯的話

long int在32位元系統時占記憶體32位元組
在64位元系統時則佔占記憶體64位元組
而long long int是固定佔占記憶體64位元組

於是能儲存的整數範圍不一定相同
32位元時是 -2^31~2^31-1 約10位數
64位元時是 -2^63~2^63-1 約20位數

路人甲 2010-02-12 09:15:51

請問~
long long的 int型態在32位元系統下和普通long int有差嘛!?