#54019: RE...


To_Be_Continued (unknown)


//跑測試時是對的,但送解答時會出現RE,想請問為何會這樣
#include<stdio.h>
 
int main(){
    int n, m, i, l, y, t;
    while((scanf("%d%d", &n, &m))!=EOF){
        char a[n];

 

        for(i=0; i<n; i++){
            scanf(" %c", &a[i]);
        }
   
        for(i=1; i<=m; i++){
            scanf("%d%d", &l, &y);
            t=0;
            for(int j=l-1; j<y; j++){
                t+=(a[j]-'0');
            }
        printf("%d\n", t);
        }
    }

 

    return 0;
}
#54020: Re: RE...


pofly (不挖鼻孔有害身心健康)


因為數字並非只有個位數

 

每組測資開始有兩個正整數 n,m (n,m <= 100000)

接下來一行有 n 個不超過一千的正整數依序代表每個食物的飽足度

 

只要任意數字改成不是個位數的數字,你讀進陣列的資料就全錯了,scanf(" %c") 只會讀一個字元,而不是整個數字

此外,正如題目所述,n和m的最大值可能有 100000 ,char 顯然是不夠存的,保證溢位

解決方式很簡單,別摳這點記憶體,該用 int 就用 int,不然至少也用個 short,你省過頭了