数数(数学题运算分配律)

在这里插入图片描述
这道题,你把每个写出来,可以发现可以提出来;然后直接预处理+快速幂就AC了:
对于加法:
在这里插入图片描述
提公因子,然后发现就是等差数列,然后把(1+2+…+n)再统一提出来,就可以发现其实就是这个东东(1+2+…+n)的平方,所以直接等差数列然后Mod就行了;
对于乘法也是一样的思路,化简出来就是(123…*n)的2n次方,快速幂的时候取n就行了算出来两个相乘就是ans2了;
AC代码:

#include<cstdio>
#include<iostream>
using namespace std;
const int Mod=998244353;
long long qp(long long x,long long n){
  long long res=1;
  while(n){
    if(n&1){
      res=(res*x)%Mod;
      }
      x=(x*x)%Mod;
      n>>=1;
    }
    return res;
  }
  long long fac[10000010];
  void save(){///预处理1--1e7+5的阶乘
    fac[1]=1;
    for(long long i=2;i<=1e7+5;i++){
      fac[i]=i*fac[i-1]%Mod;
      }
    }
int main(){
  long long t,n;
  save();
  scanf("%lld",&t);
  while(t--){
    scanf("%lld",&n);
    long long tt=1 ,ans=(n*(n+1)/2)%Mod;
    ans=(ans*ans)%Mod;
     
      tt= fac[n];
      tt=qp(tt,n);
      tt=(tt*tt)%Mod;
      printf("%lld %lld\n",ans,tt);
    }
  return 0;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值