比赛的时候没看到模数,用java大数在写,最后看到的时候已经慌了。。

把贡献算清楚就可以

下面是贡献的推导

  有五位数 abcde * 10个

  有两位数 fg * 3 个

  那么这两种数组成的情况就是 abcdfeg 或 abcfdge,现在只考虑五位数在前,两位数在后的情况,

  五位数的情况是abcd_e_,每个五位数出现了3次,那直接把10个五位数在每位上求和,然后这个五位数的贡献*3,

  两位数的情况是____f_g,每个两位数出现了10次,那么也直接把3个两位数在每位上求和,然后这个两位数的贡献*10

#include<bits/stdc++.h>
using namespace std;
#define maxn 100005
#define ll long long
#define mod 998244353
ll n,a[maxn],A[];
ll cnt[],x[][];
void calc(ll a){
ll len=,tmp=a,pos=;
while(tmp){
tmp/=;len++;
}
cnt[len]++; tmp=a;
while(tmp){
pos++;
x[len][pos]+=tmp%;
tmp/=;
}
} ll f(int i,int j){
ll res1=,res2=;
if(i>j){
for(int k=;k<=j;k++){
res2=(res2+x[j][k]*A[k*-]%mod)%mod;
res1=(res1+x[i][k]*A[k*]%mod)%mod;
}
for(int k=j+;k<=i;k++)
res1=(res1+x[i][k]*A[j+k]%mod)%mod;
}
else if(i==j){
for(int k=;k<=i;k++){
res2=(res2+x[j][k]*A[k*-]%mod)%mod;
res1=(res1+x[i][k]*A[k*]%mod)%mod;
}
}
else if(i<j){
for(int k=;k<=i;k++){
res2=(res2+x[j][k]*A[k*-]%mod)%mod;
res1=(res1+x[i][k]*A[k*]%mod)%mod;
}
for(int k=i+;k<=j;k++)
res2=(res2+x[j][k]*A[k+i]%mod)%mod;
}
return (res1*cnt[j]+res2*cnt[i]%mod)%mod;
} int main(){
cin>>n;
A[]=;
for(int i=;i<=;i++)A[i]=A[i-]*%mod;
for(int i=;i<=n;i++){
cin>>a[i];
calc(a[i]);
}
ll ans=;
for(int i=;i<=;i++)
for(int j=;j<=;j++)
if(cnt[i] && cnt[j])
ans=(ans+f(i,j))%mod;
cout<<ans<<endl;
}

最新文章

  1. PHP 缩放图片
  2. LeetCode#227.Basic Calculator II
  3. BZOJ3813: 奇数国
  4. 理解javascript中的原型模式
  5. CentOS安装XRDP实现远程桌面访问
  6. but has failed to stop it. This is very likely to create a memory leak(c3p0在Spring管理中,连接未关闭导致的内存溢出)
  7. 如何将硬盘GPT分区转换为MBR分区模式
  8. 自然语言处理中的自注意力机制(Self-attention Mechanism)
  9. JavaEE EL &amp; JSTL 学习笔记
  10. Redis主从同步要深入理解?一篇文章足矣!
  11. locate命令
  12. vue三级联动
  13. [Oracle运维工程师手记] 如何从trace 文件,判断是否执行了并行
  14. mongodb使用问题记录
  15. CSS选择器:子选择符号
  16. JQuery遍历,find()和each()方法
  17. win10 Xshell5连ubuntu服务器
  18. Python基础学习Day4 列表的使用方法、range 用法、in用法
  19. JAVA面对对象(二)——继承、方法的覆写
  20. docker报错“net/http: TLS handshake timeout”的解决方法

热门文章

  1. logo的普遍写法
  2. Nginx---文档(从入门到精通)
  3. php高版本安装ecshop错误解决方法
  4. 线段树求后继+环——cf1237D
  5. FS获取KERNEL32基址的三种方法
  6. postgresql数字类型
  7. Java的poi技术遍历Excel时进行空Cell,空row,判断
  8. Machine Learning 之二,什么监督性学习,非监督性学习。
  9. 简单谈谈Python中的几种常见的数据类型
  10. flink学习之十一-window&amp;EventTime实例