比赛的时候没看到模数,用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. Linux下Golang Socket编程原理分析与代码实现

    在POSIX标准推出后,socket在各大主流OS平台上都得到了很好的支持.而Golang是自带Runtime的跨平台编程语言,Go中提供给开发者的Socket API是建立在操作系统原生Socket ...

  2. python 装饰器的坑

    今天研究了下装饰器,添加重试功能遇到了个坑,跟大家分享一下: 代码如下: def re_try(maxtry): print locals() def wrapper(fn): print local ...

  3. 使用navigator.userAgent来判断浏览器类型

    var br=navigator.userAgent.toLowerCase(); var browserVer=(br.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ...

  4. throws/throw Exception 异常应用

    throws通常用于方法的声明,当方法中发生异常的时候,却不想在方法中对异常进行处理的时候,就可以在声明方法时, 使用throws声明抛出的异常,然后再调用该方法的其他方法中对异常进行处理(如使用tr ...

  5. demo BaseDao随笔,hibernate框架

    /** * 增加entity * * @param Object对象 * @throws Exception */ public <T> void save(T ob) throws Ex ...

  6. DELPHI中枚举类型数据的介绍和使用方法

    在看delphi程序的时候看到aa=(a,b,c,d);这样的东西,还以为是数组,同事说是函数,呵呵,当然这两个都不屑一击,原来这样式子是在声明并付值一个枚举类型的数据.下边写下来DELPHI中枚举类 ...

  7. Apache解析漏洞复现(CVE-2017-15715),可以绕过黑名单

    照着P神的文章准备复现一下(总结一下经验) 环境的安装 这里面直接使用的vulhub里面的环境来进行安装的(为了方便吗) 基础环境如下    实际上Apache版本在2.4.0~2.4.29即可 i ...

  8. 解决$.ajax请求在ie8下失效问题

    ie8下默认把跨域请求拦截了,需要用jquery.xdomainrequest.min.js 处理跨域问题,需放在jq下引入 http://cdnjs.cloudflare.com/ajax/libs ...

  9. 红黑数之原理分析及C语言实现

    目录: 1.红黑树简介(概念,特征,用途) 2.红黑树的C语言实现(树形结构,添加,旋转) 3.部分面试题() 1.红黑树简介 1.1 红黑树概念 红黑树(Red-Black Tree,简称R-B T ...

  10. Lambda表达式演变历史

    /// <summary> /// 爬虫委托 /// </summary> /// <param name="crawlerCode">爬虫编码 ...