练习题目-爬楼梯

来源:互联网 发布:讯龙恢复软件 编辑:程序博客网 时间:2024/04/29 10:00
一天,果姐想和男票一起去红高粱吃饭,但在到达红高粱之前,果姐要爬一段重邮最为可爬的楼梯—夺命天梯! 果姐每次爬楼梯可以跨一步(上一层台阶)或者跨三步(上三层台阶),果姐不会选择跨两层台阶,因为他觉得那样既不优雅,也不省时。果姐突然想知道,她可以用几种姿势(方式)走完这个n层的楼梯呢? 请聪明的你给她答案!

Input

第一行输入一个T,代表一个有几组测试数据; 之后T行每行输入一个数n,代表楼梯层数(n<=40)

Output

每组测试数据输出一个答案

Sample Input

61234510

Sample Output

1123428
#include <iostream>#include <stdio.h>using namespace std;int f(int n,int m){if(n==0)return 1;else{int i=1;int sum1=1,sum2=1;while(i<=n){sum1*=i;sum2*=m;m--;i++;int x;for(x=2;x<=sum1;x++){if(sum1%x==0&&sum2%x==0){sum1/=x;sum2/=x;break;}}}return sum2/sum1;}}int main(){int a[100]={0},T,n;scanf("%d",&T);int i=1,t;while(i<=T){scanf("%d",&n);if(n==3)a[i]=2;else if(n<3)a[i]=1;else {   t=n/3;   int y;   if(n%3==0)   y=t;   else        y=t+n-t*3; while(t>=0){a[i]+=f(t,y);t--;y+=2;}}i++;} i=1;while(i<=T){printf("%d\n",a[i]);i++;}    return 0;}


0 0
原创粉丝点击