列表

详情


KS15. 魔法深渊

描述

前几个月放映的头号玩家简直火得不能再火了,作为一个探索终极AI的研究人员,月神自然去看了此神剧。
由于太过兴奋,晚上月神做了一个奇怪的梦,月神梦见自己掉入了一个被施放了魔法的深渊,月神想要爬上此深渊。

已知深渊有 N 层台阶构成 ,并且每次月神仅可往上爬2的整数次幂个台阶(1、2、4、....),请你编程告诉月神,月神有多少种方法爬出深渊

数据范围: ,输入的数据组数满足

输入描述

输入共有M行

第一行输入一个数M表示有多少组测试数据,

接着有M行,每一行都输入一个 N 表示深渊的台阶数

输出描述

输出可能的爬出深渊的方式

示例1

输入:

4
1
2
3
4

输出:

1
2
3
6

原站题解

C 解法, 执行用时: 1ms, 内存消耗: 376KB, 提交时间: 2020-05-20

#include<stdio.h>
   
#define MOD 1000000003;    
int main()
{
    int n,t,i,j;
    int a[1000];
    a[0]=1;a[1]=1;                        /*计算初始条件*/
    for(i=2;i<=1000;i++)
    {
        a[i]=0;
        for(j=1;j<=i;j*=2)
        {                                   
            a[i]+=a[i-j];
            a[i]%=MOD;
        }
    }
    int N;
    scanf("%d",&N);
    int b[N];
    for(i=0;i<N;i++)
    {
        scanf("%d",&n);
        b[i]=a[n];
        printf("%d\n",b[i]);
    }
}

C 解法, 执行用时: 2ms, 内存消耗: 232KB, 提交时间: 2020-04-20

#include<stdio.h>
  
#define MOD 1000000003;     
int main()
{
    int n,t,i,j;
    int a[1000];
    a[0]=1;a[1]=1;                        /*计算初始条件*/
    for(i=2;i<=1000;i++)
    {
        a[i]=0;
        for(j=1;j<=i;j*=2)
        {                                    
            a[i]+=a[i-j];
            a[i]%=MOD;
        }
    }
    int N;
    scanf("%d",&N);
    int b[N];
    for(i=0;i<N;i++)
    {
        scanf("%d",&n);
        b[i]=a[n];
        printf("%d\n",b[i]);
    }
}

上一题