题目

https://ac.nowcoder.com/acm/contest/907/D

做法

\((x)_k\)定义编号,如果\(a+b\)加到一起能进一位,\(a+b\rightarrow 1+(a+b-k)=a+b-(k-1)\),故\(d(a_{l,r})=\sum\limits_{i=l}^r a_i\% k-1\)

但我们发现\(k-1\)这一块缺失了,显然为\(0\)当且仅当区间均为\(0\),其他情况得出\(0\)的时候实际结果为\(k-1\)

  • \(b=0\):全\(0\)区间个数

  • \(b=k-1\):满足\(/%(k-1)=0\)的个数-全\(0\)区间个数

  • 其他情况:\(a_{l,r}=sum_r-sum_{l-1}\%(k-1),sum_r-sum_{l-1}\equiv b (\%k-1),sum_r-b\equiv sum_{l-1}(\%k-1)\)

Code

#include<bits/stdc++.h>
typedef long long LL;
const LL maxn=1e6+9;
inline LL Read(){
LL x(0),f(1); char c=getchar();
while(c<'0' || c>'9'){
if(c=='-') f=-1; c=getchar();
}
while(c>='0' && c<='9'){
x=(x<<3)+(x<<1)+c-'0'; c=getchar();
}return x*f;
}
LL k,b,n,ret,num,ze;
LL a[maxn],sum[maxn];
std::map<LL,LL> cnt;
int main(){
k=Read(); b=Read(); n=Read();
for(LL i=1;i<=n;++i) a[i]=Read();
for(LL i=1;i<=n;++i){
sum[i]=(sum[i-1]+a[i])%(k-1);
if(!a[i]){
++num;
ze+=num;
}else
num=0;
}
if(!b){
printf("%lld\n",ze);
return 0;
}
cnt[0]++;
for(LL i=1;i<=n;++i){
LL val((sum[i]-b+k-1)%(k-1));
ret+=cnt[val];
++cnt[sum[i]];
}
if(b==k-1) ret-=ze;
printf("%lld\n",ret);
return 0;
}

D-【乐】k进制数(同余)的更多相关文章

  1. CF459C Pashmak and Buses (构造d位k进制数

    C - Pashmak and Buses Codeforces Round #261 (Div. 2) C. Pashmak and Buses time limit per test 1 seco ...

  2. P1066 2^k进制数

    传送门 题目描述 设r是个2^k 进制数,并满足以下条件: (1)r至少是个2位的2^k 进制数. (2)作为2^k 进制数,除最后一位外,r的每一位严格小于它右边相邻的那一位. (3)将r转换为2进 ...

  3. 洛谷 P1066 2^k进制数

    P1066 2^k进制数 题目描述 设r是个2^k 进制数,并满足以下条件: (1)r至少是个2位的2^k 进制数. (2)作为2^k 进制数,除最后一位外,r的每一位严格小于它右边相邻的那一位. ( ...

  4. 【洛谷p1066】2^k进制数

    (不会敲键盘惹qwq) 2^k进制数[传送门] 算法标签: (又是一个提高+省选-的题) 如果我说我没听懂你信吗 代码qwq: #include<iostream> #include< ...

  5. 一本通1649【例 2】2^k 进制数

    1649:[例 2]2^k 进制数 时间限制: 1000 ms         内存限制: 524288 KB [题目描述] 原题来自:NOIP 2006 提高组 设 r 是个 2k 进制数,并满足以 ...

  6. 蓝桥杯 问题 1110: 2^k进制数 (排列组合+高精度巧妙处理)

    题目链接 题目描述 设r是个2^k 进制数,并满足以下条件: (1)r至少是个2位的2^k 进制数. (2)作为2^k 进制数,除最后一位外,r的每一位严格小于它右边相邻的那一位. (3)将r转换为2 ...

  7. 洛谷P1066 2^k进制数

    P1066 2^k进制数 题目描述 设r是个2^k 进制数,并满足以下条件: (1)r至少是个2位的2^k 进制数. (2)作为2^k 进制数,除最后一位外,r的每一位严格小于它右边相邻的那一位. ( ...

  8. [NOIP2006] 提高组 洛谷P1066 2^k进制数

    题目描述 设r是个2^k 进制数,并满足以下条件: (1)r至少是个2位的2^k 进制数. (2)作为2^k 进制数,除最后一位外,r的每一位严格小于它右边相邻的那一位. (3)将r转换为2进制数q后 ...

  9. [luogu]P1066 2^k进制数[数学][递推][高精度]

    [luogu]P1066 2^k进制数 题目描述 设r是个2^k 进制数,并满足以下条件: (1)r至少是个2位的2^k 进制数. (2)作为2^k 进制数,除最后一位外,r的每一位严格小于它右边相邻 ...

随机推荐

  1. pfSense QoS IDS

    pfSense QoS IDS 来源 https://blanboom.org/2018/pfsense-setup/ 之前我使用的无线路由器是 RT1900ac,其内置了 QoS 和 IDS/IPS ...

  2. J.U.C之重入锁:ReentrantLock

    此篇博客所有源码均来自JDK 1.8 ReentrantLock,可重入锁,是一种递归无阻塞的同步机制.它可以等同于synchronized的使用,但是ReentrantLock提供了比synchro ...

  3. 通过 Java 压缩文件,打包一个 tar.gz 采集器包

    一.如何通过 Java 打包文件 1.1 添加 Maven 依赖 <dependency> <groupId>org.apache.commons</groupId> ...

  4. H5 - flexbox 弹性盒布局和布局原理

    新版的flexbox规范分两部分:一部分是container,一部分是 items. flexbox是一整套布局规范,包含了多个css属性,所以学习起来比`float: left;` 这样简单的布局要 ...

  5. dede织梦如何去除网站底部的版权信息

    dede织梦如何删除版权powered by?在织梦中,特别是在仿站之中,经常会在首页的底部出现powered by,这是dedecms织梦系统底部自带的官方链接power by等字样,很多新用户想去 ...

  6. MySQL 数据库的安装与卸载

    一.安装 (1)打开下载的 mysql 安装文件双击解压缩,运行“mysql-5.5.40-win32.msi” (2)选择安装类型, 有“Typical(默认) ”. “Complete(完全) ” ...

  7. php协议任意文件读取

    php://filter/read=convert.base64-encode/resource=index.php

  8. coco creator编辑动画坑之拖图片

    如图所示,批量选中多张图片之后,拖到右下角的框中,发现有时候可以有时候不行.这个我觉得是个软件的bug 后来经过测试发现只有在粉红色圈的高度才可以正确放入图片,否则都放不了.

  9. Set的交集、差集踩坑记录

    项目中我用到了Set的retainAll和removeAll两个方法取差集和交集. 用法网上都有,我也不展示了. 但是因为我是急着用,直接就照着写了,没想到出大问题了. 因为我的set是一个map的k ...

  10. 15 Windows编程——系统内置窗口子类型之button

    button子类型BS_3STATE.BS_AUTO3STATE.BS_AUTOCHECKBOX 源码 #include<Windows.h> #include<Windowsx.h ...