Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- char fibo[502][101];
- void build_fibo_string()
- {
- int i, j;
- for(i = 0; i < 502; i++){
- for(j = 0; j < 100; j++){
- fibo[i][j] = '0';
- }
- fibo[i][100] = '\0';
- }
- }
- void create_fibo_number(int n)
- {
- int sum = 0, carry = 0;
- int i;
- for(i = 99; i >= 0; i--){
- sum = fibo[n-1][i] + fibo[n-2][i] + carry - '0' - '0';
- carry = (sum) / 10;
- fibo[n][i] = (sum) % 10 + '0';
- }
- }
- void build_fibo_number()
- {
- int i, j;
- fibo[0][99] = '1';
- fibo[1][99] = '1';
- for(i = 2; i < 502; i++){
- create_fibo_number(i);
- if(fibo[i][0] > '0') break;
- }
- }
- int main()
- {
- char s1[105], s2[105];
- char str1[105], str2[105];
- int count, i, j;
- build_fibo_string();
- build_fibo_number();
- while(1){
- scanf("%s %s", s1, s2);
- if(s1[0] == '0' && s2[0] == '0') break;
- int len1 = strlen(s1);
- int len2 = strlen(s2);
- int i, j;
- for(i = 0; i < 100 - len1; i++){
- str1[i] = '0';
- }
- for(i = 100 - len1, j = 0; i < 100; i++, j++){
- str1[i] = s1[j];
- }
- str1[i] = '\0';
- for(i = 0; i < 100 - len2; i++){
- str2[i] = '0';
- }
- for(i = 100 - len2, j = 0; i < 100; i++, j++){
- str2[i] = s2[j];
- }
- str2[i] = '\0';
- count = 0;
- for(i = 1; i < 476; i++){
- if(strcmp(str1, fibo[i]) <= 0 && strcmp(fibo[i], str2) <= 0) count++;
- else if(strcmp(fibo[i], str2) > 0) break;
- }
- printf("%d\n", count);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement