4724: [POI2017]Podzielno

Time Limit: 10 Sec  Memory Limit: 128 MB
Submit: 77  Solved: 37
[Submit][Status][Discuss]

Description

B进制数,每个数字i(i=0,1,...,B-1)有a[i]个。你要用这些数字组成一个最大的B进制数X(不能有前导零,不需要
用完所有数字),使得X是B-1的倍数。q次询问,每次询问X在B进制下的第k位数字是什么(最低位是第0位)。

Input

第一行包含两个正整数B(2<=B<=10^6),q(1<=q<=10^5)。
第二行包含B个正整数a[0],a[1],a[2],...,a[B-1](1<=a[i]<=10^6)。
接下来q行,每行一个整数k(0<=k<=10^18),表示一个询问。

Output

输出q行,每行一个整数,依次回答每个询问,如果那一位不存在,请输出-1。

Sample Input

3 3
1 1 1
0
1
2

Sample Output

0
2
-1

HINT

 

Source

[Submit][Status][Discuss]

-----------------------------------------------------------------------------

数学题目

证明在N进制下若1一个数是(N-1)的倍数 那么 他的每一位数字相加在(%(N-1))的意义下等于 0

例如在10进制下 198是9的倍数 因为 (1+9+8)%9=0

证明:

  假设一个数字A (N进制下) 那么设它每一位上的数字为 k[i] 则 A=Σki*N^i  (N^i)%(N-1)=1A%(N-1)=(Σki)%(N-1)=0

代码如下:

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define CH c=getchar()
#define mp make_pair
#define fi first
#define se second
#define For(i,x,y) for(int i=x;i<=y;++i)
using namespace std;
const int N=1e6+;
long long a[N];
long long B,q;
long long f[N];
inline int read()
{
bool f=;char CH;for(;!isdigit(c);CH)if(c=='-')f=;
int x=;for(;isdigit(c);CH)x=(x<<)+(x<<)+c-;
return f?-x:x;
}
int main()
{
// cout<<read();
long long tmp=;
B=read();q=read();
For(i,,B-)a[i]=read();
For(i,,B-)
tmp=(tmp+1LL*(a[i]%(B-))*i)%(B-);
if (tmp)a[tmp]--;
f[]=a[];
For(i,,B-)
{
f[i]=f[i-]+a[i];
}
while(q--)
{
long long k;scanf("%lld",&k);
if(k>=f[B-])printf("-1");else
printf("%d",lower_bound(f,f+B,k+)-f);
puts("");
}
return ;
}

BZOJ4724 [POI2017]Podzielno的更多相关文章

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

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

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

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

  3. 【bzoj4724】[POI2017]Podzielno 二分

    题目描述 B进制数,每个数字i(i=0,1,...,B-1)有a[i]个.你要用这些数字组成一个最大的B进制数X(不能有前导零,不需要用完所有数字),使得X是B-1的倍数.q次询问,每次询问X在B进制 ...

  4. BZOJ 4724: [POI2017]Podzielno

    Description 由\([0,B-1]\)的数字构造一个 \(B\) 进制数字,使得他是 \(B-1\) 的倍数. Sol 贪心+二分. 首先 \(X\) 是 \(B-1\) 的倍数,那么有 \ ...

  5. BZOJ 4726: [POI2017]Sabota?

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

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

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

  7. BZOJ 4727: [POI2017]Turysta

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

  8. BZOJ_4726_[POI2017]Sabota?_树形DP

    BZOJ_4726_[POI2017]Sabota?_树形DP Description 某个公司有n个人, 上下级关系构成了一个有根树.其中有个人是叛徒(这个人不知道是谁).对于一个人, 如果他 下属 ...

  9. [POI2017]Sabotaż

    [POI2017]Sabotaż 题目大意: 一棵\(n(n\le5\times10^5)\)个结点的树,初始时有一个未知的黑点,其余全为白点.对于一个点,如果其子树中黑点所占比例超过\(x\),则这 ...

随机推荐

  1. java基础之 超类Object

    一.概述:       Object类是所有Java类的祖先.每个类都使用 Object 作为超类.所有对象(包括数组)都实现这个类的方法.在不明确给出超类的情况下,Java会自动把Object作为要 ...

  2. 搭建Android开发环境。

    1. 从 http://developer.android.com/intl/zh-cn/sdk/index.html 下载ADK 2. 点击SDK.Manager.exe, 遇到闪退的问题,一开始还 ...

  3. placeholder 不支持IE修复

    <script type="text/javascript"> var JPlaceHolder = { //检测 _check : function(){ retur ...

  4. 作业七:团队项目——Alpha版本冲刺阶段004

    今日进展:我们的扫雷基本界面已经差不多了,准备开始编写内部代码. 今日安排:做好界面,准备开始代码编写.

  5. centos7安装

    1.准备工具 VMware,我用的是 VMware11 2.打开VMware,创建新的虚拟机 3.选择典型-->下一步 4.稍后安装操作系统-->下一步 5.选择linux操作系统,lin ...

  6. oracle问题

    (1) 连通性: 注册中心负责服务地址的注册与查找,相当于目录服务,服务提供者和消费者只在启动时与注册中心交互,注册中心不转发请求,压力较小 监控中心负责统计各服务调用次数,调用时间等,统计先在内存汇 ...

  7. BZOJ 2898 模拟

    普及组水题. 按位模拟第一个序列和第二个序列,细节比较多.. 仅为部分看后面两位的和,如果大于10就近位小于8就不进位等于9就看下一位. #include <cstdio> #define ...

  8. [转] 添加新的系统调用 _syscall0(int, mysyscall)

    实验目的阅读 Linux 内核源代码,通过添加一个简单的系统调用实验,进一步理解Linux操作系统处理系统调用的统一流程.通过用kernel module的方法来实现一个系统调用实验,进一步理解Lin ...

  9. Centos安装完MariaDB后启动不了 MySQL is not running, but lock file (/var/lock/subsys/mysql) exists

    [root@admin-node subsys]# service mysql startStarting MySQL. ERROR! [root@admin-node subsys]# servic ...

  10. TIOBE 2015年7月编程语言排行榜:C++的复兴

    TIOBE 2015年7月编程语言排行榜:C++的复兴 发表于2015-07-13 17:03| 16086次阅读| 来源CSDN| 128 条评论| 作者钱曙光 编程语言排行榜TIOBEC++ 摘要 ...