#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,想請問問題是出在哪裡?要如何改才不會超時?
有幾點問題
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);
有幾點問題
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);
我了解了,謝謝你!
有幾點問題
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);
我了解了,謝謝你!