Mujin Programming Challenge 2017A

编程入门 行业动态 更新时间:2024-10-07 16:17:12

Mujin <a href=https://www.elefans.com/category/jswz/34/1751576.html style=Programming Challenge 2017A"/>

Mujin Programming Challenge 2017A

题意:
给你n个人的位置,每个人能往后跳一格或两格到无人的位置,跳到0位置,这个人消失,n个人消失组成一个排列,问有多少种排列。
思路:
额,搞了一整场这个A...代码也巨挫了。
处理成1,3,5,7,9.....的位置情况,当出现连续的时候,比如1,3,5,7,8的话那么后面的数怎么跳都不会在前面这些数之前跳出去,bingo!
所以当前就可以说明这几个就可以在现在跳出去,比如1,3,5,7,8这5个数,第一次跳出去的数有5种情况,然而一个跳出去以后,接下来一个位置是7这个位置。
代码num表示当前出去的数量。
code:
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const LL mod=1e9+7;
const int N=1e5+10;
LL n;
int a[N];
LL f[N];
void init()
{f[0]=1;for(LL i=1;i<=100000;i++)f[i]=f[i-1]*i%mod;
}int main()
{init();scanf("%lld",&n);for(int i=1;i<=n;i++)scanf("%d",&a[i]);LL ans=1;LL b=1;LL num=0;for(LL i=2;i<=n;i++){if(b+2<=a[i])b=b+2;else{ans=ans*(i-num)%mod;num++;}}ans=ans*f[n-num]%mod;printf("%lld\n",ans);return 0;
}



更多推荐

Mujin Programming Challenge 2017A

本文发布于:2024-02-16 17:57:18,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1690979.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:Programming   Mujin   Challenge

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!