#include
#include
int main()
{int a0,a1,a2;
int b0[50],b1[50],b2[50],ans[50];
int i,j,flag;
while(scanf("%d%d%d",&a0,&a1,&a2)!=EOF)
{
memset(b0,0,sizeof(b0));
memset(b1,0,sizeof(b1));
memset(b2,0,sizeof(b2));
memset(ans,0,sizeof(ans));
i = 49;
while(a0>0)
{
b0[i] = a0%10;
a0 /= 10;
i--;
}
i = 49;
while(a1>0)
{
b1[i] = a1%10;
a1 /= 10;
i--;}
i = 49;
while(a2>0)
{b2[i] = a2%10;
a2 /= 10;
i--;
}
for(i=0;i<97;i++)
{flag = 0;
for(j=49;j>0;j--)
{ans[j] = b0[j]+b1[j]+b2[j]+flag;
flag = ans[j]/10;
ans[j] = ans[j]%10;}
if(flag>0)
ans[j] = flag;
for(j=49;j>0;j--)
{b0[j] = b1[j];
b1[j] = b2[j];
b2[j] = ans[j];
}
}
i = 0;
while(!ans[i]) i++;
for(;i<50;i++)
printf("%d",ans[i]);
printf("\n");
}
return 0;
}
#include
void main()
{
int i,a[99];
printf("输入前三项:");
scanf("%d,%d,%d",&a[0],&a[1],&a[2]);
for(i=3;i<99;i++)
{
a[i]=a[i-2]+a[i-1]+a[i-3];
}
printf("%d",a[98]);
}
an=3^(n-1)+a(n-1) 两边同除以3^(n-1)
3an/3^n=1+a(n-1)/3^(n-1)
3(an/3^n-1/2)=[a(n-1)/3^(n-1)-1/2]
(an/3^n)/[a(n-1)/3^(n-1)-1/2]=1/3
所以是以a1/3-1/2=-1/6为首相q=1/3为公比的等比数列
an/3^n-1/2=(-1/6)(1/3)^(n-1)
an/3^n=1/2-(1/6)(1/3)^(n-1)
=1/2-(1/6)(1/3)^(n-1)
=1/2-(1/2)(1/3)^n
=[1-(1/3)^n]/2
=[1-3^(-n)]/2
即an=(3^n-1)/2
用递归实现
#include"stdio.h"
int f(int n)
{
if(n==0||n==1||n==2)return n;
else
return f(n-1)+f(n-2)+f(n-3);
}
main()
{
int n;
printf("input a number:");
scanf("%d",&n);
printf("\nf(n)=%d",f(n));;
getchar();
}
A99 Input 输入包含多行数据 什么意思