577866/1111 2014-09-15 07:41:45
点我顶贴
收藏
删除
这么简单一个递推竟然想了这么长时间才想出来……
#include <stdio.h>
int base;
int n;
long numbers[1000];
void read();
void calculate();
long mypow(int base,int index);
void write();
int main()
{
read();
calculate();
write();
return (0);
}
void read()
{
extern int base,n;
scanf("%d%d",&base,&n);
}
void calculate()
{
extern int base,n;
extern long numbers[1000];
int i,j,iosn=0,nowindex=1;
numbers[0]=1;
for(i=1;i<n;i++)
{
if(i-iosn==iosn+1)
{
numbers[i]=mypow(base,nowindex);
nowindex++;
iosn=i;
}
else
numbers[i]=numbers[iosn]+numbers[i-iosn-1];
}
}
long mypow(int base,int index)
{
int i,answer=1;
if(base!=0&&index==0)
return (1);
else
{
for(i=0;i<index;i++)
answer=answer*base;
return (answer);
}
}
void write()
{
extern int n;
extern long numbers[1000];
printf("%ld",numbers[n-1]);
}