NC208006. 签到题
描述
输入描述
多组输入,每个文件不超过2000组一行,一个正整数n(1 <= n <= 1e5)
输出描述
一行,一个整数,即方案数
示例1
输入:
1 2
输出:
0 2
C++14(g++5.4) 解法, 执行用时: 6ms, 内存消耗: 1268K, 提交时间: 2020-06-21 15:50:46
#include <bits/stdc++.h> using namespace std; typedef long long LL; const int mod=1e9+7; LL n,f[100010]={1}; int main(){ for(int i=1;i<=1e5;i++) f[i]=f[i-1]*i%mod; while(~scanf("%lld",&n)){ printf("%lld\n",f[n]*(n*(n-1)/2%mod)%mod); } return 0; }
C++11(clang++ 3.9) 解法, 执行用时: 11ms, 内存消耗: 1356K, 提交时间: 2020-06-23 12:39:36
#include<bits/stdc++.h> using namespace std; const int mod=1e9+7; long long i,n,A[100005]; int main() { for(A[0]=i=1;i<=1e5;i++)A[i]=A[i-1]*i%mod; while(~scanf("%lld",&n))printf("%lld\n",n*(n-1)/2%mod*A[n]%mod); }
Python3 解法, 执行用时: 112ms, 内存消耗: 8776K, 提交时间: 2022-04-05 20:21:26
f=[1,1,2] mod=int(1e9+7) for i in range(3,int(1e5+1)): f.append(i*f[i-1]%mod) while True: try: n=int(input()) print(f[n]*n*(n-1)//2%mod) except: break