列表

详情


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;
}

上一题