0
点赞
收藏
分享

微信扫一扫

DP--爬楼梯1

NicoalsNC 2022-10-26 阅读 74


题目描述

前几个月放映的头号玩家简直火得不能再火了,作为一个探索终极AI的研究人员,月神自然去看了此神剧。

由于太过兴奋,晚上月神做了一个奇怪的梦,月神梦见自己掉入了一个被施放了魔法的深渊,月神想要爬上此深渊。

 

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

输入描述:


输入共有M行,(1<=M<=1000) 第一行输入一个数M表示有多少组测试数据, 接着有M行,每一行都输入一个N表示深渊的台阶数


输出描述:


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


示例1

输入

复制


4 1 2 3 4


输出

复制


1 2 3 6


备注:


为了防止溢出,可将输出对10^9 + 3取模


#include<iostream>
#include<vector>
using namespace std;

int main(){
int M;int N;long Mod = 1000000003;
scanf("%d",&M);
vector<int> Vec(10);
for(int i = 0;i < 10;i ++){
int m = 1 << i;
Vec[i] = m;
}
for(int j = 0;j < M;j ++){
scanf("%d",&N);
vector<int> dp(1001,0);
dp[0] = 1;
for(int i = 1;i <= N;i ++){
for(auto v : Vec){
if(v <= i){
dp[i] += dp[i - v];
dp[i] = dp[i] % Mod;
}
}
}
printf("%d\n",dp[N]);
}
return 0;
}

 

举报

相关推荐

0 条评论