比赛的时候没看到模数,用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;
}

模拟+算贡献——cf1195D的更多相关文章

  1. Codeforces Round #289 (Div. 2, ACM ICPC Rules) E. Pretty Song 算贡献+前缀和

    E. Pretty Song time limit per test 1 second memory limit per test 256 megabytes input standard input ...

  2. 2019牛客多校第七场 F Energy stones 树状数组+算贡献转化模拟

    Energy stones 题意 有n块石头,每块有初始能量E[i],每秒石头会增长能量L[i],石头的能量上限是C[i],现有m次时刻,每次会把[s[i],t[i]]的石头的能量吸干,问最后得到了多 ...

  3. hdu 5228 OO’s Sequence(单独取数算贡献)

    Problem Description OO has got a array A of size n ,defined a function f(l,r) represent the number o ...

  4. 线性基算贡献——19牛客多校第一场H

    /* 给定数组a[],求有多少集合的异或值为0,将这些集合的大小之和求出来 对于每个数来说,如果除去这个数后数组里做出的线性基和这个数线性相关,那么这个数贡献就是2^(n-1-线性基的大小) 反之这个 ...

  5. hdu 5525 Product 数论算贡献

    Product Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Proble ...

  6. Codeforces 903 绝对值1e19longdouble算贡献 汉明距离交换两项是否可行

    A /*Huyyt*/ #include<bits/stdc++.h> #define mem(a,b) memset(a,b,sizeof(a)) #define pb push_bac ...

  7. GitBash上传代码不计入贡献的问题处理

    发现最近写的代码,通过GitBash上传到github,但是格子确一个都没亮,今天通过一番检索解决了此问题,特做记录: 通过这篇文章找到了原因所在: GitHub 更新代码到底怎样才算贡献? 通过这篇 ...

  8. codeforces 425B Sereja and Table(状态压缩,也可以数组模拟)

    题目 给出一个n*m的01矩阵, 让你最多改变k个里面的值(0变1,1变0), 使得0.1的连通分量是矩阵.输出最少步数 1 ≤ n, m ≤ 100; 1 ≤ k ≤ 10 题解: 如果01连通分量 ...

  9. PKUSC 模拟赛 题解_UPD

    之前挖了两个大坑 一个是day1下午的第二题 另一个是day2上午的第五题 先说day1下午的第二题吧 我们显然不能O(n^2)的dp,所以我们只能算贡献 首先对于任意一个边界点而言,他对答案的贡献路 ...

随机推荐

  1. 在模拟器安装测试APP,给指定设备安装APP

    1.配置好安卓环境变量,确保adb已连接且可用 2.启动模拟器,通过cmd命令行窗口 输入adb devices,出现设备信息,该设备信息是模拟器的device ID 3.进入APP的存放目录:D:\ ...

  2. String的static方法

    //String concat(String str) 拼接字符串 String concat_str0 = "abc"; String concat_str1 = "b ...

  3. react-devtools超级简单安装教程

    有时候看网上各路大神,写如何安装react-devtools,大神就是大神,好多步骤一笔带过,导致一些学习者看的一脸懵逼,今天我给大家讲超级简单的react-devtools安装步骤,相信看过的小伙伴 ...

  4. 常见条码类型介绍(Code 39、Code 128、EAN-8、EAN-13、EAN-128、ISSN、TIF、TIF-14、UPC(A)、UPC(E))

    常见条码类型,如下: 1.Code 39 Code 39,又称为"Code 3 of 9",是非零售市场中最常用的格式,用于盘存和跟踪.Code 39码编码规则简单,误码率低.所能 ...

  5. tarjan求强联通分量

    tarjan求强联通分量 变量含义说明: pre[i]:i点的被访问的时钟编号,被分配后保持不变 low[i]:i点能访问的最先的点的时钟编号,随子节点改变 scc_no[i]:i点所在的强联通分量的 ...

  6. mac下nginx

    配置文件位置 /usr/local/etc/nginx/nginx.conf 简单命令 nginx -s quit 退出 nginx -s reload 重新加载 nginx -t 测试nginx.c ...

  7. 内存Zone中的pageset成员分析

    1: struct per_cpu_pageset __percpu *pageset; 首先,分析一个函数,__free_pages,这个函数是Buddy System提供的API接口函数,用于翻译 ...

  8. PhotoShop的10大误区

    一.使用错误的图像模式 操作菜单变成灰色?颜色看起来不对劲?当你遇到这些问题的时候,应该停下来,不要再编辑.这些可 能就是使用错误的图像模式而引起的问题.在主菜单中选择“图像>模式”,在这里确保 ...

  9. 【转载】Spring 源码分析之 bean 实例化原理

    本次主要想写spring bean的实例化相关的内容.创建spring bean 实例是spring bean 生命周期的第一阶段.bean 的生命周期主要有如下几个步骤: 创建bean的实例 给实例 ...

  10. Node篇

    [Node篇] Node.js中的stream(流)- 基础篇 1)什么是stream(流) 流(stream)在 Node.js 中是处理流数据的抽象接口(abstract interface). ...