Advertisement
saske_7

fibonacci_big(datalab )

Sep 23rd, 2017
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.54 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<string.h>
  3. #define M 5000
  4. #define N 5000
  5. char ts1[M],ts2[M],s1[M],s2[M],s3[M],t[M],s4[M],str1[M],str2[M];
  6. struct{
  7. char str[M];
  8.  
  9.  
  10. }arr[N+5];
  11.  
  12.  
  13.  
  14. int main(){
  15. int i,len1,len2 ,j,k,sum ,carry ;
  16. int max,min,kk,jj,ii;
  17. strcpy(str2,"0\0");
  18. strcpy(str1,"1\0");
  19. kk =1;
  20. while(1){
  21.  
  22. strcpy(ts1,str1);
  23. strcpy(ts2,str2);
  24.  
  25. len1 = strlen(ts1);
  26. len2 = strlen(ts2);
  27. if(len1< len2)
  28. {
  29.     strcpy(t,ts1);
  30.     strcpy(ts1,ts2);
  31.     strcpy(ts2,t);
  32.  
  33. max =  len2;
  34. min =  len1;
  35. }
  36. else{
  37.     max = len1;
  38.     min = len2;
  39.  
  40. }
  41.  
  42. k = strlen(ts1);
  43. for(i = 0;i< k ;i++)
  44. {
  45.     s1[i] = ts1[k-i-1];
  46.  
  47. }
  48. s1[i] = '\0';
  49. k = strlen(ts2);
  50. for(i = 0;i< k ;i++)
  51. {
  52.     s2[i] = ts2[k-i-1];
  53.  
  54. }
  55. s2[i] = '\0';
  56.  
  57.  
  58. i = 0;
  59. carry   = 0;
  60.     for(k = 0 ; k< min; k++)
  61.     {
  62.         j = (s1[k]-'0') + (s2[k]-'0')+ carry ;
  63.          sum = j%10;
  64.          carry = j/10;
  65.         s3[k] = sum+'0' ;
  66.  
  67.     }
  68.  
  69.         for(;k< max ;k++)
  70.         {
  71.         j = (s1[k]-'0') + carry ;
  72.          sum = j%10;
  73.          carry = j/10;
  74.         s3[k] = sum+'0' ;
  75.  
  76.         }
  77.         if(carry!= 0){
  78.             while(carry != 0){
  79.             sum = carry % 10;
  80.             s3[k++] = sum +'0';
  81.              carry/=10;
  82.             }
  83.         }
  84.  
  85.  
  86.  
  87.  
  88. s3[k] = '\0';
  89. k = strlen(s3);
  90. for(i = 0;i< k ;i++)
  91. {
  92.     s4[i] = s3[k-i-1];
  93.  
  94. }
  95. s4[i] = '\0';
  96. strcpy(arr[kk++].str,s4);
  97. strcpy(str1,str2);
  98. strcpy(str2,s4);
  99. ii++;
  100. if(kk == 1000)break;
  101. }
  102. printf("code ready\n");
  103.  
  104. while(scanf("%d",&k)==1){
  105.  
  106.  
  107. printf("%dth fib is %s\n",k,arr[k].str);
  108. }
  109. return 0;}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement