NC25457. 数数
描述
“你已经是一个成熟的孩子了,要学会自己数数了!”
输入描述
多组数据。
第一行一个数 ,表示测试数据组数。接下来 行,每行一个数 。
输出描述
对于每一组测试数据,输出一行两个数,即这组测试数据的答案。
示例1
输入:
1 1
输出:
1 1
pypy3(pypy3.6.1) 解法, 执行用时: 635ms, 内存消耗: 172180K, 提交时间: 2020-08-11 09:26:47
mod = 119 << 23 | 1 fac = [1, 1] for i in range(2, 10000001) : fac.append(i * fac[i - 1] % mod) def fast ( a, b) : s = 1 while b : if b & 1 : s = s * a % mod b >>= 1 a = a * a % mod return s for _ in range(int(input())) : n = int(input()) tot = n * (n + 1) // 2 % mod print(tot * tot % mod, fast(fac[n], 2 * n))
C++14(g++5.4) 解法, 执行用时: 614ms, 内存消耗: 404K, 提交时间: 2020-08-11 19:58:12
#include<bits/stdc++.h> using namespace std; #define M 998244353 int main(){ long long t,n,ans1,ans2,p,i; scanf("%lld",&t); while(t--){ scanf ("%lld",&n); p=(n*(n+1))/2%M; ans1=p*p%M; printf("%lld ",ans1); p=1; for(i=1;i<=n;i++){ p=p*i; p=p%M; } ans2=1; for(i=0;i<2*n;i++){ ans2=ans2*p%M; } printf("%lld\n",ans2); } return 0; }
Go(1.9.1) 解法, 执行用时: 954ms, 内存消耗: 872K, 提交时间: 2019-10-05 21:25:48
package main import "fmt" func main() { var n,m,i int64 fmt.Scanln(&n) for i=0;int64(i)<n;i++{ fmt.Scanln(&m) var n1,n2,n3,j int64 n1 = m*(m+1)/2%998244353 n1 = n1*n1%998244353 n2,n3 = 1,1 for j=1;j<=m;j++{ n2 = (n2*j)%998244353 } for j=1;j<=m*2;j++{ n3*=n2 n3=n3%998244353 } fmt.Println(n1,n3) } }
C++ 解法, 执行用时: 642ms, 内存消耗: 504K, 提交时间: 2022-04-07 15:04:19
#include<bits/stdc++.h> using namespace std; const int mod=998244353; int main() { int T,n; cin>>T; while(T--) { long long x=0,y=1; cin>>n; for(int i=1;i<=n;i++) { y=y*i%mod; x=(x+i)%mod; } long long y1=1; for(int i=0;i<n*2;i++) { y1=y1*y%mod; } x=x*x%mod; cout<<x<<" "<<y1<<endl; } return 0; }