fork(4) download
  1. #include<stdio.h>
  2. #include <iostream>
  3. using namespace std;
  4.  
  5. int findgcd(int num1,int num2)
  6. {
  7. int rem=num2%num1;
  8. if(rem==0)
  9. return num1;
  10. findgcd(rem,num1);
  11.  
  12. }
  13. void fib(int n)
  14. { int sum1[100000]={0};
  15. int temp1[100000]={0};
  16. int temp2[100000]={0};
  17. /* Declare an array to store fibonacci numbers. */
  18.  
  19. int i;
  20.  
  21. /* 0th and 1st number of the series are 0 and 1*/
  22.  
  23. temp2[0]=0;
  24. int*prev2=temp2;
  25.  
  26. temp1[0]=1;
  27. int*sum=sum1;
  28. int*prev1=temp1;
  29.  
  30. int j,x;
  31. for (i = 2; i <= n; i++)
  32. {
  33. int te=0;
  34. j=0;
  35. while(prev1[j]!=0||prev2[j]!=0||prev2[j+1]!=0||prev1[j+1]!=0||prev2[j+2]!=0)
  36. { x=prev1[j]+prev2[j];
  37. if(te==1)
  38. {prev1[j]=prev1[j]-1;te=0;}//leaned how to add using arrays
  39. if(x<=9)
  40. sum[j]=x;
  41. else {sum[j]=x%10;
  42. prev1[j+1]=prev1[j+1]+1;te=1;}
  43. j++;}
  44. if(i!=n){int*temp1=prev2;
  45. int*temp=prev1;
  46. prev1=sum;
  47. prev2=temp;
  48. sum=temp1;}
  49. }
  50. int rem=0;
  51. if(n!=1){for(int num=j-1;num>=0;num--)
  52. {
  53. rem+=sum[num]%1000000007;
  54. printf("%d",sum[num]);}
  55.  
  56. printf("\n");}
  57. else printf("1\n");
  58.  
  59. }
  60.  
  61.  
  62.  
  63. int main ()
  64. { int test,i;
  65. scanf("%d",&test);
  66. for(i=1;i<=test;i++)
  67. {int a,b;
  68.  
  69. scanf("%d%d",&a,&b);
  70. int n=findgcd(a,b);
  71.  
  72.  
  73. fib(n);}
  74.  
  75. return 0;
  76. }
  77.  
Success #stdin #stdout 0s 3140KB
stdin
Standard input is empty
stdout
Standard output is empty