#3083: 我的程式碼是否可更精簡


dabee (葑)

學校 : 臺北市立成功高級中學
編號 : 10028
來源 : [203.64.138.67]
最後登入時間 :
2010-12-08 18:05:21
a005. Eva 的回家作業 -- POJ | From: [118.165.71.14] | 發表日期 : 2009-12-21 23:04

最近剛接觸c++

 a005這題解起來花很久時間,很多程式碼用的不太熟練,不過最後還是解出來了。

只是發現顯示的大小為2.3mb 我看到一些人的是1mb以下,所以我把我寫的放上來,希望各位高手能提點我一下^^,如何能更精簡。

 C++:

 

 #include<iostream>
using namespace std;
int main()
{
int x;
int i;
int ansi;

RE:
   
while (cin >> x){
int a[x],b[x],c[x],d[x],ans[x];

for(i = 1;i <= x;i++){
        cin >> a[i] >> b[i] >> c[i] >> d[i] ;
       
       if( (b[i] - a[i]) == (c[i] - b[i]) && (c[i] - b[i]) == (d[i] - c[i]) ){
            ans[i] = (b[i] - a[i])*4 + a[i];}
        else if ( (b[i]/a[i]) == (c[i]/b[i]) && (c[i]/b[i]) == (d[i]/c[i]) ){
            int r;
            r = (b[i]/a[i]) ;
            ans[i] = a[i]*r*r*r*r;}
        else { cout << "第" << i << "數列無規律,請重新輸入數列數目" << endl; goto RE;} 

        }
for(ansi = 1;ansi <= x;ansi++){ 
  cout << a[ansi] << " " << b[ansi] << " " << c[ansi] << " " << d[ansi] << " " << ans[ansi] << endl;}

}


system("pause");
return 0;
}

 
#3084: Re:我的程式碼是否可更精簡


example (學姊)

學校 : 臺北市立麗山高級中學
編號 : 6634
來源 : [60.250.138.144]
最後登入時間 :
2022-08-09 17:07:42
a005. Eva 的回家作業 -- POJ | From: [118.166.115.123] | 發表日期 : 2009-12-21 23:11

最近剛接觸c++

 a005這題解起來花很久時間,很多程式碼用的不太熟練,不過最後還是解出來了。

只是發現顯示的大小為2.3mb 我看到一些人的是1mb以下,所以我把我寫的放上來,希望各位高手能提點我一下^^,如何能更精簡。

 C++

 把 system("pause") 拿掉就會是 1 MB 以下摟

 C++ 語法我不熟

 所以幫不上很大的忙

 不過我有個做法可以給你參考

 讀入 第一個數 N

 然後用迴圈包起來做 N 次

 每次迴圈開始讀入四個數 ( 宣告五個數就好而不是五個陣列 )

 每次答案輸出

 就這樣摟

 
#3336: Re:我的程式碼是否可更精簡


leopan0922 (zz)

學校 : 臺北市立成功高級中學
編號 : 6612
來源 : [140.113.225.106]
最後登入時間 :
2016-08-15 15:44:07
a005. Eva 的回家作業 -- POJ | From: [219.70.174.13] | 發表日期 : 2010-01-28 23:14

最近剛接觸c++

 a005這題解起來花很久時間,很多程式碼用的不太熟練,不過最後還是解出來了。

只是發現顯示的大小為2.3mb 我看到一些人的是1mb以下,所以我把我寫的放上來,希望各位高手能提點我一下^^,如何能更精簡。

 C++

 把 system("pause") 拿掉就會是 1 MB 以下摟

 C++ 語法我不熟

 所以幫不上很大的忙

 不過我有個做法可以給你參考

 讀入 第一個數 N

 然後用迴圈包起來做 N 次

 每次迴圈開始讀入四個數 ( 宣告五個數就好而不是五個陣列 )

 每次答案輸出

 就這樣摟


#include<iostream>
using namespace std;
int main(){
    int n,a,b,c,d;
    while(cin>>n)
         while(n--){
              cin>>a>>b>>c>>d;
                   printf("%d %d %d %d %d\n",a,b,c,d,(b-a==c-b)?d+b-a:d*b/a);}
     return 0;}

這樣就好了

 
ZeroJudge Forum