#22654: C求救 一直出現TLE


qazxj4qo4vup@gmail.com (quad0510)

學校 : 不指定學校
編號 : 133053
來源 : [36.238.132.80]
最後登入時間 :
2022-04-14 21:03:23
a005. Eva 的回家作業 -- POJ | From: [101.10.9.196] | 發表日期 : 2020-09-23 03:14

#include <stdio.h>

int main(){

    int a1,a2,a3,a4,a5;

    while(scanf("%d %d %d %d",&a1,&a2,&a3,&a4)){

 

        if((a2-a1)==(a3-a2)&&(a4-a3)==(a2-a1)){

            a5=a4+a4-a3;

            printf("%d %d %d %d %d\n",a1,a2,a3,a4,a5);

        }

        else if((a2/a1)==(a3/a2)&&(a4/a3)==(a2/a1)){

            a5=a4*(a4/a3);

            printf("%d %d %d %d %d\n",a1,a2,a3,a4,a5);

        }

        else printf("%d %d %d %d\n",a1,a2,a3,a4);

    }

    return 0;

}

 

在CodeBlocks可以正確運行,但送出一直出現TLE,想請問問題是出在哪裡?要如何改才不會超時?

 
#22656: Re:C求救 一直出現TLE


snakeneedy (蛇~Snake)

學校 : 國立高雄師範大學附屬高級中學
編號 : 7661
來源 : [114.40.8.251]
最後登入時間 :
2023-01-25 19:16:06
a005. Eva 的回家作業 -- POJ | From: [123.194.188.217] | 發表日期 : 2020-09-23 03:32

有幾點問題

1. 你少處理了 Input 說明的

第一行是數列的數目t(0 <= t <= 20)

2. 這題不用判斷 EOF,就算判斷 EOF 也應該寫成

while (scanf("%d %d %d %d",&a1,&a2,&a3,&a4) != EOF) {

3. 題目可以確定的是,數列一定為等差或者等比,後面的 else 可以省略

else printf("%d %d %d %d\n",a1,a2,a3,a4);

4. 整數的除法問題,3/2 會得到 1 而不是 1.5,底下這行建議把括號拿掉

a5=a4*(a4/a3);
 
#22666: Re:C求救 一直出現TLE


qazxj4qo4vup@gmail.com (quad0510)

學校 : 不指定學校
編號 : 133053
來源 : [36.238.132.80]
最後登入時間 :
2022-04-14 21:03:23
a005. Eva 的回家作業 -- POJ | From: [101.10.9.196] | 發表日期 : 2020-09-23 19:30

有幾點問題

1. 你少處理了 Input 說明的

第一行是數列的數目t(0 <= t <= 20)

2. 這題不用判斷 EOF,就算判斷 EOF 也應該寫成

while (scanf("%d %d %d %d",&a1,&a2,&a3,&a4) != EOF) {

3. 題目可以確定的是,數列一定為等差或者等比,後面的 else 可以省略

else printf("%d %d %d %d\n",a1,a2,a3,a4);

4. 整數的除法問題,3/2 會得到 1 而不是 1.5,底下這行建議把括號拿掉

a5=a4*(a4/a3);

我了解了,謝謝你!

 
#22667: Re:C求救 一直出現TLE


qazxj4qo4vup@gmail.com (quad0510)

學校 : 不指定學校
編號 : 133053
來源 : [36.238.132.80]
最後登入時間 :
2022-04-14 21:03:23
a005. Eva 的回家作業 -- POJ | From: [101.10.9.196] | 發表日期 : 2020-09-23 19:30

有幾點問題

1. 你少處理了 Input 說明的

第一行是數列的數目t(0 <= t <= 20)

2. 這題不用判斷 EOF,就算判斷 EOF 也應該寫成

while (scanf("%d %d %d %d",&a1,&a2,&a3,&a4) != EOF) {

3. 題目可以確定的是,數列一定為等差或者等比,後面的 else 可以省略

else printf("%d %d %d %d\n",a1,a2,a3,a4);

4. 整數的除法問題,3/2 會得到 1 而不是 1.5,底下這行建議把括號拿掉

a5=a4*(a4/a3);

我了解了,謝謝你!

 
ZeroJudge Forum