Description

由\([0,B-1]\)的数字构造一个 \(B\) 进制数字,使得他是 \(B-1\) 的倍数.

Sol

贪心+二分.

首先 \(X\) 是 \(B-1\) 的倍数,那么有 \(X \equiv 0 (mod B-1)\)

设 \(X\) 的第 \(i\) 位,为\(X_i\)

那么则有 \(\sum_{i=0}^{n-1}x_iB^i \equiv 0(mod B-1)\)

因为 \(B^i \equiv 1(mod B-1)\)

所以就是 \(\sum_{i=0}^{n-1}x_i \equiv 0(mod B-1)\)

数据保证了 \(a_i \geqslant 1\)

所以直接去掉这一位就可以了...

询问直接二分.

PS:一开始一直在想将 \(X\) 表示成 \(tB-t\) 的形式...就是在末尾加个 \(0\) 减去 \(t\),计算每一位的贡献...后来失败了...

Code

/**************************************************************
Problem: 4724
User: BeiYu
Language: C++
Result: Accepted
Time:2740 ms
Memory:9104 kb
****************************************************************/ #include <cstdio>
#include <algorithm>
#include <iostream>
using namespace std; typedef long long LL;
const int N = 1000005; LL n,t,m,p;
LL a[N]; inline LL in(LL x=0,char ch=getchar()){ while(ch>'9' || ch<'0') ch=getchar();
while(ch>='0' && ch<='9') x=x*10+ch-'0',ch=getchar();return x; }
int main(){
n=in(),t=in();m=n-1;
for(int i=0;i<n;i++) a[i]=in(),p=(p+(i*a[i]%m))%m;
if(p) a[p]--;
for(int i=1;i<n;i++) a[i]+=a[i-1];
for(LL k,ans;t--;){
k=in();ans=upper_bound(a,a+n,k)-a;
if(ans>m) puts("-1");else printf("%lld\n",ans);
}return 0;
}

  

BZOJ 4724: [POI2017]Podzielno的更多相关文章

  1. bzoj 4724 [POI2017]Podzielno 二分+模拟

    [POI2017]Podzielno Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 364  Solved: 160[Submit][Status][ ...

  2. BZOJ4724 [POI2017]Podzielno

    4724: [POI2017]Podzielno Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 77  Solved: 37[Submit][Stat ...

  3. 【BZOJ4724】[POI2017]Podzielno 数学+二分

    [BZOJ4724][POI2017]Podzielno Description B进制数,每个数字i(i=0,1,...,B-1)有a[i]个.你要用这些数字组成一个最大的B进制数X(不能有前导零, ...

  4. BZOJ 4726: [POI2017]Sabota?

    4726: [POI2017]Sabota? Time Limit: 20 Sec  Memory Limit: 128 MBSec  Special JudgeSubmit: 301  Solved ...

  5. BZOJ 4726: [POI2017]Sabota? 树形dp

    4726: [POI2017]Sabota? 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=4726 Description 某个公司有n ...

  6. BZOJ 4727: [POI2017]Turysta

    4727: [POI2017]Turysta Time Limit: 20 Sec  Memory Limit: 128 MBSec  Special JudgeSubmit: 117  Solved ...

  7. bzoj 4725 [POI2017]Reprezentacje ró?nicowe 暴力

    [POI2017]Reprezentacje ró?nicowe Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 141  Solved: 67[Sub ...

  8. bzoj 4723 [POI2017]Flappy Bird 模拟

    [POI2017]Flappy Bird Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 482  Solved: 196[Submit][Status ...

  9. BZOJ 4725: [POI2017]Reprezentacje ró?nicowe

    Description 一个数列. \(a_1=1,a_2=2\) 当 \(n>2\) 时 \[a_n = \{  \begin {matrix} 2a_{n-1},\text{n is an ...

随机推荐

  1. 由于log太多导致ubuntu硬盘空间满了,进入不了系统解决办法

    具体现象是在图形界面输入用户名和密码之后,再次提示需要输入用户名和密码. 步骤一:按快捷键进入命令行界面.ctrl+alt+f1. 步骤二:清空文件 clear log cd /var/log sud ...

  2. swift的后台编码路

    链接: 一步一步学swift之:自己写Api接口-PHP    

  3. [转有改动]vi

    转自http://www.51testing.com/html/86/427686-247344.html 多按几次[ESC],系统会发出滴滴声以确定进入命令模式.就进入了命令模式,所有在键盘上打的字 ...

  4. nginx.conf中配置laravel框架站点

    nginx.conf配置如下: user nginx nginx;worker_processes 4; error_log logs/error.log error; pid logs/nginx. ...

  5. js base64加密,后台解密

    这是为了解决页面发送post请求,传输密码,在页面的控制台可以看到密码的明文,所以先用base64把要传输的密码转换为非明文,然后在后台解密处理. base64encode.js // base64加 ...

  6. deepin 15.3 安装数据库MariaDB10.0

    直接终端执行安装命令即可 sudo apt-get install mariadb-server -y 查询DB编码 #进入数据库 mysql -uroot -p #显示默认编码 show varia ...

  7. 【bzoj1076】 SCOI2008—奖励关

    http://www.lydsy.com/JudgeOnline/problem.php?id=1076 (题目链接) 题意 一个奖励,K次抛出宝物的机会,每次抛出都等概率的抛出n个物品中的一个,每个 ...

  8. ReactNative 当前url和cookies的获取

    前面大概介绍了react-native的运行helloword级别的入门,所以之后简单的东西就不写了,毕竟官网上都能够找到. reactnative官网:https://facebook.github ...

  9. 国内优秀npm镜像推荐及使用

    npm全称Node Package Manager,是node.js的模块依赖管理工具.由于npm的源在国外,所以国内用户使用起来各种不方便.下面整理出了一部分国内优秀的npm镜像资源,国内用户可以选 ...

  10. poj3468 A Simple Problem with Integers(zkw区间修改模板)

    此题是一道线段树的裸题,这里只是为了保存我的zkw线段树模板 #include <cstdio> #include <cstring> #include <iostrea ...