2011-04-07 14:09:34Morris
優化輸入的函式
用法:
將這些程式碼貼上去你的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;
}
將這些程式碼貼上去你的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;
}
Thank you..