[ACM] 495 - Fibonacci Freeze

看板C_and_CPP (C/C++)作者時間15年前 (2010/08/24 00:54), 編輯推噓2(203)
留言5則, 4人參與, 最新討論串1/1
題號:495 遇到的問題: 我用同樣的內容,丟 http://zerojudge.tw/RealtimeStatus 通過, 但是丟 UVa 卻跟我說 Time limit exceeded 我測得時間約 600ms,應該是在時限3秒內才對, 程式碼長度: 1422 Bytes,執行檔大小: 9902 Bytes。 請各位幫我想一下可能是哪出了問題,謝謝。 有問題的code: (請善用置底文的標色功能) /* Fibonacci Freeze */ #include <string.h> #include <iostream> #define LEN 1500 using namespace std; void Print(char n[])//輸出結果 { int i; for( i = LEN - 1 ; i > 0 ; i-- ) if( n[ i ] != 0) break; for( ; i >= 0; i-- ) printf("%d", n[ i ] ); printf("\n"); } void Add(char a[], char b[], char c[])//定義加法 { int i; for( i = 0 ; i < LEN ; i++ ) c[ i ] = a[ i ] + b[ i ] ; for( i = 0 ; i < LEN - 1 ; i++ ) { if( c[ i ] >= 10 ) { c[ i + 1 ] += c[ i ] / 10 ; c[ i ] %= 10; } } } void Fibon( int n, char a[3][LEN] )//定義Fibonacci數的運算 { int j; int i = 1; for( j = 0 ; j < LEN; j++ )//定義0 a[ 0 ][ j ] = 0; for( j = 1 ; j < LEN; j++ )//定義1 a[ 1 ][ j ] = 0; a[ 1 ][ 0 ] = 1; while ( i < n ) { //製作一個 a[3][LEN] 矩陣 Add( a[ 0 ] , a[ 1 ] , a[ 2 ] );//固定用 a[2] 輸出結果 for ( j = 0 ; j < LEN ; j++ ) { a[ 0 ][ j ] = a[ 1 ][ j ]; a[ 1 ][ j ] = a[ 2 ][ j ]; } i++; } } int main() { int n; while( cin >> n ) //連續輸出 { char a[3][LEN]; if ( n == 0 | n == 1) //第0項與第1項分開輸出 { cout << "The Fibonacci number for "<< n << " is " << n << endl; } else { Fibon( n , a ); cout << "The Fibonacci number for "<< n << " is "; Print( a[2] );//固定用 a[2] 輸出結果 } } return 0; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.85.191.230

08/24 01:00, , 1F
答案存起來 不要重算 試試看
08/24 01:00, 1F

08/24 01:04, , 2F
兩個OJ測資也不同阿= =
08/24 01:04, 2F

08/24 01:10, , 3F
如果要用答案存起來的方式,測資大時我程式會爆...
08/24 01:10, 3F

08/24 01:10, , 4F
請問2樓是指?
08/24 01:10, 4F

08/24 03:16, , 5F
動態配置或全域。
08/24 03:16, 5F
文章代碼(AID): #1CSgVPAM (C_and_CPP)
文章代碼(AID): #1CSgVPAM (C_and_CPP)