Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<string.h>
- #define M 5000
- #define N 5000
- char ts1[M],ts2[M],s1[M],s2[M],s3[M],t[M],s4[M],str1[M],str2[M];
- struct{
- char str[M];
- }arr[N+5];
- int main(){
- int i,len1,len2 ,j,k,sum ,carry ;
- int max,min,kk,jj,ii;
- strcpy(str2,"0\0");
- strcpy(str1,"1\0");
- kk =1;
- while(1){
- strcpy(ts1,str1);
- strcpy(ts2,str2);
- len1 = strlen(ts1);
- len2 = strlen(ts2);
- if(len1< len2)
- {
- strcpy(t,ts1);
- strcpy(ts1,ts2);
- strcpy(ts2,t);
- max = len2;
- min = len1;
- }
- else{
- max = len1;
- min = len2;
- }
- k = strlen(ts1);
- for(i = 0;i< k ;i++)
- {
- s1[i] = ts1[k-i-1];
- }
- s1[i] = '\0';
- k = strlen(ts2);
- for(i = 0;i< k ;i++)
- {
- s2[i] = ts2[k-i-1];
- }
- s2[i] = '\0';
- i = 0;
- carry = 0;
- for(k = 0 ; k< min; k++)
- {
- j = (s1[k]-'0') + (s2[k]-'0')+ carry ;
- sum = j%10;
- carry = j/10;
- s3[k] = sum+'0' ;
- }
- for(;k< max ;k++)
- {
- j = (s1[k]-'0') + carry ;
- sum = j%10;
- carry = j/10;
- s3[k] = sum+'0' ;
- }
- if(carry!= 0){
- while(carry != 0){
- sum = carry % 10;
- s3[k++] = sum +'0';
- carry/=10;
- }
- }
- s3[k] = '\0';
- k = strlen(s3);
- for(i = 0;i< k ;i++)
- {
- s4[i] = s3[k-i-1];
- }
- s4[i] = '\0';
- strcpy(arr[kk++].str,s4);
- strcpy(str1,str2);
- strcpy(str2,s4);
- ii++;
- if(kk == 1000)break;
- }
- printf("code ready\n");
- while(scanf("%d",&k)==1){
- printf("%dth fib is %s\n",k,arr[k].str);
- }
- return 0;}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement