高精度求斐波那契数列中间个数
来源:互联网 发布:用c 计算矩阵特征值 编辑:程序博客网 时间:2024/05/22 04:39
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include <iostream>
#include <algorithm>
using namespace std;
char fb[1003][1005];
int compare(char a[],char b[])
{
int i, n, m;
n=strlen(a);
m = strlen(b);
if (n>m)
return 1;
else if (n< m)
return 0;
else{
for (i = 0; i < n; i++){
if (a[i]>b[i])
return 1;
else if (a[i]<b[i])
return 0;
else continue;
}
}
return -1;
}
void cal(char a[],char b[],int t)
{
int c[1000],d[1000];
memset(c,0,sizeof(c));
memset(d,0,sizeof(d));
int i, j, k, m, n;
i = 1;
n=strlen(a);
m = strlen(b);
for (k = n-1; k>=0; k--){
c[i++]= a[k]-'0';
}
j = 1;
for (k = m-1; k>= 0; k--){
d[j++]= b[k]-'0';
}
k = n>m?n:m;
for (i = 1; i <= k; i++){
c[i+1]+= (c[i]+d[i])/10;
c[i]= (c[i]+d[i])%10;
}
if (c[k+1])
++k;
j=0;
for (i = k; i >= 1; i--){
fb[t][j++]=c[i]+'0';
}
}
int main()
{
char s1[1000], s2[1000];
int i, j;
memset(fb,'\0',sizeof(fb));
fb[1][0] = '1';
fb[2][0] = '2';
for (i = 3; i <= 1000; i++){
cal(fb[i-1],fb[i-2],i);
}
while(scanf("%s %s",s1,s2)){
int sum = 0;
if(!((s1[0]-'0')||(s2[0]-'0')))
break;
for (i = 1; i <= 1000; i++){
if (compare(fb[i],s1)==-1){
sum = 1;
i++;
break;
}
else if (compare(fb[i],s1)>0){
sum = 0;
break;
}
}
for (j = i; j <= 1000; j++){
if (compare(fb[j],s2)<=0){
sum++;
}
else
break;
}
printf("%d\n",sum);
}
return 0;
}
#include<cstring>
#include<cstdlib>
#include <iostream>
#include <algorithm>
using namespace std;
char fb[1003][1005];
int compare(char a[],char b[])
{
int i, n, m;
n=strlen(a);
m = strlen(b);
if (n>m)
return 1;
else if (n< m)
return 0;
else{
for (i = 0; i < n; i++){
if (a[i]>b[i])
return 1;
else if (a[i]<b[i])
return 0;
else continue;
}
}
return -1;
}
void cal(char a[],char b[],int t)
{
int c[1000],d[1000];
memset(c,0,sizeof(c));
memset(d,0,sizeof(d));
int i, j, k, m, n;
i = 1;
n=strlen(a);
m = strlen(b);
for (k = n-1; k>=0; k--){
c[i++]= a[k]-'0';
}
j = 1;
for (k = m-1; k>= 0; k--){
d[j++]= b[k]-'0';
}
k = n>m?n:m;
for (i = 1; i <= k; i++){
c[i+1]+= (c[i]+d[i])/10;
c[i]= (c[i]+d[i])%10;
}
if (c[k+1])
++k;
j=0;
for (i = k; i >= 1; i--){
fb[t][j++]=c[i]+'0';
}
}
int main()
{
char s1[1000], s2[1000];
int i, j;
memset(fb,'\0',sizeof(fb));
fb[1][0] = '1';
fb[2][0] = '2';
for (i = 3; i <= 1000; i++){
cal(fb[i-1],fb[i-2],i);
}
while(scanf("%s %s",s1,s2)){
int sum = 0;
if(!((s1[0]-'0')||(s2[0]-'0')))
break;
for (i = 1; i <= 1000; i++){
if (compare(fb[i],s1)==-1){
sum = 1;
i++;
break;
}
else if (compare(fb[i],s1)>0){
sum = 0;
break;
}
}
for (j = i; j <= 1000; j++){
if (compare(fb[j],s2)<=0){
sum++;
}
else
break;
}
printf("%d\n",sum);
}
return 0;
}
0 0
- 高精度求斐波那契数列中间个数
- 求斐波那契数列第三十个数
- hdu1316(斐波那契数列+高精度)
- HDU1250 高精度斐波那契数列
- 求斐波那契数列的第n个数
- 求斐波那契数列的第n个数
- 求斐波那契数列的第N个数的值
- 求斐波那契数列
- 求斐波那契数列
- hdu 1250 高精度+类似斐波那契数列
- HDU 5686 (斐波那契数列 高精度)
- 求斐波那契数列的第n个数(递归、非递归)
- 求斐波那契数列的第n个数;1,1,2,3,5,8,13,21.....
- 扩展的斐波那契数列:求兔子个数
- 斐波那契数列的素数个数
- 斐波那契数列第n个数
- 【LintCode】查找斐波那契数列中的N个数
- 求解斐波那契数列的第n个数
- C++ const用法大全
- CSS弹跳动画
- grep命令,或关系
- Lecture 8 Hashing II
- spring 注解 aop 详细介绍
- 高精度求斐波那契数列中间个数
- 动态规划--买书(背包方案数)
- ubuntu 搜狗输入法不能输入中文
- mac 上安装mongodb
- java遍历删除指定文件夹下面的相同格式或指定格式的file文件
- AES和RSA加密算法入门Demo
- 使用浏览器查看Android SQLite数据库-Android Debug Database用法
- 与spring结合的策略模式
- Designing Data-Intensive Applications(设计数据密集应用)- O'Reilly 2017 读书笔记