题解 | 小红的双生排列

小红的双生排列

https://www.nowcoder.com/practice/592c127032164493b505d59540595e99?tpId=37&tags=&title=&difficulty=3&judgeStatus=0&rp=1&sourceUrl=%2Fexam%2Foj%2Fta%3FtpId%3D37

#include <iostream>
using namespace std;
/*
偶数:n/2;
奇数:n-n/2
奇数排列*偶数排列个数
如果是奇数=偶数,则先排奇数或先排偶数都可以(后面*2);
而如果奇数=偶数+1,则只能先排奇数,两奇数中间插偶数。
*/
int main() {
    long long a = 0, b = 0, count = 1;
    long long n;
    while (cin >> n) {
        b = n / 2;
        a = n - b;
        if (n == 2) {
            cout << 2;
            return 0;
        }
        for (int i = a; i > 0; i--) {
            count *= i;
            count %= (1000000000 + 7);
        }
        for (int j = b; j > 0; j--) {
            count *= j;
            count %= (1000000000 + 7);
        }
        if(n%2==0)count=count*2%(1000000000 + 7);
        cout << count;
    }
}

#转行#
牛客-华为机试题解 文章被收录于专栏

刷题过程中,对部分有心得的题目的解题方式进行分享,欢迎交流!

全部评论

相关推荐

05-04 17:20
武汉大学
已注销:技术栈删了,让ai把你的项目丰富化,干的活太少了,像是写了个demo,起码一个项目四点重要内容,内容用技术栈描述,取得了什么进展,简历大部分都留给项目,其他的压缩
如何写一份好简历
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务