Advertisement
silentkiler029

Fibonacci Number

May 9th, 2020
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.69 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. char fibo[502][101];
  5.  
  6. void build_fibo_string()
  7. {
  8.     int i, j;
  9.     for(i = 0; i < 502; i++){
  10.         for(j = 0; j < 100; j++){
  11.             fibo[i][j] = '0';
  12.         }
  13.         fibo[i][100] = '\0';
  14.     }
  15. }
  16.  
  17. void create_fibo_number(int n)
  18. {
  19.     int sum = 0, carry = 0;
  20.     int i;
  21.     for(i = 99; i >= 0; i--){
  22.         sum = fibo[n-1][i] + fibo[n-2][i] + carry - '0' - '0';
  23.         carry = (sum) / 10;
  24.         fibo[n][i] = (sum) % 10 + '0';
  25.     }
  26. }
  27.  
  28. void build_fibo_number()
  29. {
  30.     int i, j;
  31.     fibo[0][99] = '1';
  32.     fibo[1][99] = '1';
  33.     for(i = 2; i < 502; i++){
  34.         create_fibo_number(i);
  35.         if(fibo[i][0] > '0') break;
  36.     }
  37. }
  38.  
  39. int main()
  40. {
  41.     char s1[105], s2[105];
  42.     char str1[105], str2[105];
  43.     int count, i, j;
  44.  
  45.     build_fibo_string();
  46.     build_fibo_number();
  47.  
  48.     while(1){
  49.         scanf("%s %s", s1, s2);
  50.  
  51.         if(s1[0] == '0' && s2[0] == '0') break;
  52.  
  53.         int len1 = strlen(s1);
  54.         int len2 = strlen(s2);
  55.         int i, j;
  56.  
  57.         for(i = 0; i < 100 - len1; i++){
  58.             str1[i] = '0';
  59.         }
  60.         for(i = 100 - len1, j = 0; i < 100; i++, j++){
  61.             str1[i] = s1[j];
  62.         }
  63.         str1[i] = '\0';
  64.         for(i = 0; i < 100 - len2; i++){
  65.             str2[i] = '0';
  66.         }
  67.         for(i = 100 - len2, j = 0; i < 100; i++, j++){
  68.             str2[i] = s2[j];
  69.         }
  70.         str2[i] = '\0';
  71.  
  72.         count = 0;
  73.         for(i = 1; i < 476; i++){
  74.             if(strcmp(str1, fibo[i]) <= 0 && strcmp(fibo[i], str2) <= 0) count++;
  75.             else if(strcmp(fibo[i], str2) > 0) break;
  76.         }
  77.         printf("%d\n", count);
  78.     }
  79.  
  80.  
  81.     return 0;
  82. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement