牛客练习题52–>数数
一个数学问题,知道了就做出一半了,然后求幂,取模,就差不多了。不知道的就只能……
#include <iostream>
#include <stdio.h>
#include <algorithm>
#define mod 998244353
using namespace std;
long long dapow(long long a,long long b,long long mo)
{
long long z;
if (b==0) {
return 1;
}
if (b%2==1){
return (a * dapow(a, b - 1, mo)) % mo;
}else{
z = dapow(a, b / 2, mo);
return (z * z)%mo;
}
}
int main()
{
int t;
long n;
cin >> t;
while (t--)
{
cin >> n;
long long ans, sum = 1;
ans = ((n + 1) * n / 2)%mod;
ans *= ans%mod;
for (long i = 1; i <= n;i++)
{
sum *= i;
sum %= mod;
}
sum=dapow(sum, 2 * n, mod);
printf("%lld %lld\n", ans%mod, sum%mod);
}
return 0;
}
错误案例
#include <iostream>
#include <stdio.h>
#include <algorithm>
using namespace std;
int main() {
int n=0;
long long m=0;
long long total=0;
long k = 998244353;
cin >> n;
for (int i = 1; i <= n&&n<=5; i++) {
cin >> m;
total = 0;
for (long long j = 1; j <= m; j++) {
total = total%k + (j*j)%k;//应将结果求出,再取模total = (total + (j*j))%k;
}
total = total % k;
cout << total << ' ' << total << endl;
}
return 0;
}
1.不知道题目的意思,以为i,j相乘求和,不知道交换求和
2.思路不清晰
如果有不清楚交换求和的,可以看看下面一篇文章
双重求和∑∑的定义及性质
本文链接:https://blog.csdn.net/u014157109/article/details/89437547
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。