fork download
  1. #include <iostream>
  2. #include <iomanip>
  3. #define N 20001 // 項數
  4. #define W 248 // 位數
  5. using namespace std;
  6.  
  7. int main() {
  8.  
  9. int i, j;
  10. long long **ptr = NULL;
  11. ptr = new long long*[N];
  12. for (i = 0; i < N; i++) {
  13. ptr[i] = new long long[W];
  14. }
  15.  
  16.  
  17. for (i = 0; i < N; i++) {
  18. for (j = 0; j < W; j++) {
  19. ptr[i][j] = 0;
  20. }
  21. }
  22. ptr[0][0] = 0; //可省略
  23. ptr[1][0] = 1;
  24.  
  25. //___________________________________
  26.  
  27. int tem = 0;
  28. for (i = 2; i < N; i++) {
  29. for (j = 0; j < W; j++) {
  30. ptr[i][j] = ptr[i - 1][j] + ptr[i - 2][j] + tem;
  31. if (ptr[i][j] >= 1000000000000000000) { //處理進未必須要有=
  32. tem = ptr[i][j] / 1000000000000000000;
  33. ptr[i][j] = ptr[i][j] % 1000000000000000000;
  34. }
  35. else
  36. tem = 0;
  37. }
  38. }
  39.  
  40. // Output_______________________________________
  41. int n;
  42. while (cin >> n) {
  43.  
  44.  
  45. for (i = n, j = W - 1; j >= 0; j--)
  46. if (ptr[i][j] != 0) // 由大而小紀錄第一個不為0 j的位置
  47. break;
  48. cout << ptr[i][j]; //先印出第一項不用補零!!
  49. for (j=j-1; j >= 0; j--) {
  50. cout << setw(18) << setfill('0') << ptr[i][j];//第二項後在數字前面補零!!!
  51. }
  52. cout << endl;
  53. }
  54. delete[] ptr; //陣列用完記憶體記得要釋放!!
  55. return 0;
  56. }
Success #stdin #stdout 0.02s 54976KB
stdin
Standard input is empty
stdout
Standard output is empty