24h購物| | PChome| 登入
2011-04-07 14:09:34| 人氣2,019| 回應3 | 上一篇 | 下一篇

優化輸入的函式

推薦 0 收藏 0 轉貼0 訂閱站台

用法:

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

再指定m=Input();即可

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

使用注意:

1.請別放在最外層的輸入(如果要一直輸入的話),因為沒辦法判斷EOF結尾(2011/6/7 修正)
   => 可以判斷EOF,但是必須要另外設定 (相關程式參照下面紅色code)
2.型態請自行修改

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

EX:

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

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

/**********************/
int Input() { 
    char cha; 
    unsigned int x = 0; 
    while(cha = getchar()) 
        if(cha != ' ' && cha != '\n' || cha == EOF) break; 
    if(cha == EOF) return -1;
    x = cha-48; 
    while(cha = getchar()) { 
        if(cha == ' ' || cha == '\n') break; 
        x = x*10 + cha-48; 
    } 
    return x; 
}
/**********************/
回傳 -1 當作是讀到 EOF請自行用
n = Input()
if(n == -1) break;
/**********************/

正整數

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

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;
}

台長: Morris
人氣(2,019) | 回應(3)| 推薦 (0)| 收藏 (0)| 轉寄
全站分類: 不分類 | 個人分類: 解題技巧 |
此分類下一篇:[技巧] 兩陣列元素交換 不是O(n) 是 O(1)

xem phim online
nice article
2017-10-03 14:02:21
sexe videos
Thank you..
2018-06-09 23:20:53
sesso videos
Thank you..
2018-06-09 23:21:19
是 (若未登入"個人新聞台帳號"則看不到回覆唷!)
* 請輸入識別碼:
請輸入圖片中算式的結果(可能為0) 
(有*為必填)
TOP
詳全文