题目链接: 数数
一、题目描述
二、输入描述:
- 多组数据。
- 第一行一个数 T,表示测试数据组数。(1 <= T <= 5)
- 接下来 T 行,每行一个数 n。(1 <= n <= 107)
三、输出描述:
对于每一组测试数据,输出一行两个数,即这组测试数据的答案。
示例1:
- 输入
1
1 - 输出
1 1
四、思路
- 很显然的数学结论题。
- 对于第一个式子 求和为 S[x] = (n*(n+1)/2)2
- 对于第二个式子 求和为 S[x] = (x!)2*n
五、Code
#include <bits/stdc++.h>
using namespace std;
#pragma GCC optimize(2)
#define ios std::ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);
#define ll long long
const int Max = 1e7+3;
const int mod = 998244353;
template<typename T> T poww(T a, T b) {
ll s = 1;
while (b) {
if (b&1) {
s = (s*a)%mod;
}
b = b >> 1;
a = (a%mod)*(a%mod)%mod;
}
return s;
}
int T;
ll n, a[Max];
int main()
{
ios
a[0]=1;
for(int i=1; i<Max; i++)
a[i] = i*a[i-1]%mod;
cin >> T;
while(T--)
{
cin >> n;
ll ans1, ans2, tmp;
ans1 = (((n+1)*n)/2)%mod;
ans1 = (ans1*ans1)%mod;
ans2 = poww(a[n], 2*n)%mod;
cout << ans1 << " " << ans2 << endl;
}
return 0;
}
蒟蒻一只,欢迎指正