NC245517. 抱歉,这没有集美
描述
输入描述
仅一行,包含一个整数,表示新生的数量。
输出描述
输出一行,包含一个整数,如题意所示,答案取模。
示例1
输入:
4
输出:
20
说明:
示例2
输入:
114514
输出:
731904262
C++(g++ 7.5.0) 解法, 执行用时: 22ms, 内存消耗: 7412K, 提交时间: 2022-11-05 13:24:46
#include <bits/stdc++.h> using namespace std; long long n, a[1<<20] = {1}, mod = 1e9 + 7; int main() { cin >> n; for(int i = 1; i <= n; i++) a[i] = a[i-1] * i % mod; cout << ((a[n] - a[n+1>>1] * a[n+1>>1] % mod) + mod) % mod; }
C++(clang++ 11.0.1) 解法, 执行用时: 22ms, 内存消耗: 7376K, 提交时间: 2022-12-06 11:05:19
#include<bits/stdc++.h> using namespace std; long long n,a[1<<20]={1},mod=1e9+7; int main(){ cin>>n; for(int i=1;i<=n;i++) a[i]=a[i-1]*i%mod; cout<<((a[n]-a[n+1>>1]*a[n+1>>1]%mod)+mod)%mod; }
Python3 解法, 执行用时: 402ms, 内存消耗: 4648K, 提交时间: 2022-11-15 16:05:12
p=int(1e9+7) n=int(input()) a=b=1 for i in range(1,(n+3)//2): a=a*i%p for i in range(1,n+1): b=b*i%p print((b-a*a)%p)