POJ 2413 How many Fibs?
来源:互联网 发布:天涯明月刀巅峰数据 编辑:程序博客网 时间:2024/05/16 15:46
How manyFibs?
Time Limit: 1000MSMemory Limit: 65536KTotal Submissions: 8617Accepted: 3173
Description
Recall thedefinition of the Fibonacci numbers:
f1 := 1
f2 := 2
fn := fn-1 + fn-2 (n>=3)
Given two numbers a and b, calculate how many Fibonacci numbers arein the range [a,b].
Input
The inputcontains several test cases. Each test case consists of twonon-negative integer numbers a and b. Input is terminated by a=b=0.Otherwise, a<=b<=10100.The numbers a and b are given with no superfluous leadingzeros.
Output
For eachtest case output on a single line the number of Fibonacci numbersfi with a<=fi<=b.
Sample Input
10 1001234567890 98765432100 0
Sample Output
54
Source
Ulm Local 2000
事情就是这么的气人,在第一次做的时候本来想到方法了,可是自己又没有编出来,结果在下面做的时候竟然一次就AC了(CE的那个不说,是忘记北大OJ上不认识strrev函数了)。
这题就是大整数加法,把一百位以内的所有数求出来(事实证明一百位以内的斐波那契数列并没有多少,这个想想就知道),然后通过与a和b的比较得出最后的结果
代码如下:
C语言: 高亮代码由发芽网提供
#include<stdio.h>
#include<string.h>
#define N 102
charstr[10005][102];
voidStrrev(char str[])
{
inti,j=0;
chars[1009];
for(i=strlen(str)-1;i>=0;i--)
s[j++]=str[i];
s[j]='\0';
strcpy(str,s);
}
intadd(char str_a[],char str_b[],char str_c[])
{
chara[N],b[N],c[N];
inti,sum,len_a,len_b,len,carry;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
strcpy(a,str_a);strcpy(b,str_b);
Strrev(a);Strrev(b);
len_a=strlen(a);len_b=strlen(b);
for(i=0;i<len_a;i++)
a[i]=a[i]-'0';
for(i=0;i<len_b;i++)
b[i]=b[i]-'0';
len=len_a>len_b?len_a:len_b;
carry=0;
for(i=0;i<len;i++)
{
sum=a[i]+b[i]+carry;
c[i]=sum%10;
carry=sum/10;
}
if(carry==1)
{
c[i]=carry;
i++;
}
len=i;
for(i=0;i<len;i++)
c[i]=c[i]+'0';
c[len]='\0';
Strrev(c);
strcpy(str_c,c);
returnlen;
}
intcompare(char a[],char b[])
{
intlen_a,len_b;
len_a=strlen(a);
len_b=strlen(b);
if(len_a>len_b)
return1;
elseif(len_a<len_b)
return-1;
else
{
returnstrcmp(a,b);
}
}
intmain()
{
inti,j,count;
chara[102],b[102];
strcpy(str[1],"1");
strcpy(str[2],"2");
for(i=3;;i++)
{
j=add(str[i-1],str[i-2],str[i]);
if(j>100)break;
}
j=i;
while(scanf("%s%s",a,b),strcmp(a,"0")!=0||strcmp(b,"0")!=0)
{
count=0;
for(i=1;i<j;i++)
{
if(compare(a,str[i])<=0)
{
if(compare(b,str[i])>=0)
count++;
elsebreak;
}
}
printf("%d\n",count);
}
return0;
}
#include<string.h>
#define N 102
charstr[10005][102];
voidStrrev(char str[])
{
inti,j=0;
chars[1009];
for(i=strlen(str)-1;i>=0;i--)
s[j++]=str[i];
s[j]='\0';
strcpy(str,s);
}
intadd(char str_a[],char str_b[],char str_c[])
{
chara[N],b[N],c[N];
inti,sum,len_a,len_b,len,carry;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
strcpy(a,str_a);strcpy(b,str_b);
Strrev(a);Strrev(b);
len_a=strlen(a);len_b=strlen(b);
for(i=0;i<len_a;i++)
a[i]=a[i]-'0';
for(i=0;i<len_b;i++)
b[i]=b[i]-'0';
len=len_a>len_b?len_a:len_b;
carry=0;
for(i=0;i<len;i++)
{
sum=a[i]+b[i]+carry;
c[i]=sum%10;
carry=sum/10;
}
if(carry==1)
{
c[i]=carry;
i++;
}
len=i;
for(i=0;i<len;i++)
c[i]=c[i]+'0';
c[len]='\0';
Strrev(c);
strcpy(str_c,c);
returnlen;
}
intcompare(char a[],char b[])
{
intlen_a,len_b;
len_a=strlen(a);
len_b=strlen(b);
if(len_a>len_b)
return1;
elseif(len_a<len_b)
return-1;
else
{
returnstrcmp(a,b);
}
}
intmain()
{
inti,j,count;
chara[102],b[102];
strcpy(str[1],"1");
strcpy(str[2],"2");
for(i=3;;i++)
{
j=add(str[i-1],str[i-2],str[i]);
if(j>100)break;
}
j=i;
while(scanf("%s%s",a,b),strcmp(a,"0")!=0||strcmp(b,"0")!=0)
{
count=0;
for(i=1;i<j;i++)
{
if(compare(a,str[i])<=0)
{
if(compare(b,str[i])>=0)
count++;
elsebreak;
}
}
printf("%d\n",count);
}
return0;
}
这题数据应该不是太强,就不附数据了。
- POJ 2413 How many Fibs?
- HDOJ 1316 How Many Fibs?
- HDU How many prime numbers
- HDU 1555 How many days?
-  
- (HDU)1213 How Many Tables
-
- poj 2488
- POJ 2485 Highways
- POJ 3299
- poj 1905
- many demos in cv
- POJ 2247 Humble Numbers
- POJ 1753 Flip Game
- POJ 1182 食物链
- POJ 3185 The Water Bowls
- POj 2379 ACM Rank Table
- POJ 1018 Communication System
- 暑期总结
- HDU 1033
- C语言图形编程(一、字符屏幕)
- C语言图形编程(二、图形显示)
- C语言图形编程(三、绘图函数-01)
- POJ 2413 How many Fibs?
- 程序员的爱情 -经典啊!!
- 七种qsort排序方法
- Spring注解@Component、@Repository、@Service、@Controller
- 交流与投票:本科毕业是先考…
- Android布局学习四:layout_weight 的使用
- ZOJ 1066(POJ 1099) Square Ice(…
- GNU ARM 汇编指令
- ZOJ 1048 Gridland(水水更健康!*…