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. 第3.3 案例2: 工作队列 job queue

    第2个案例就是工作队列,典型的点对点的消息,一个Producer发送一个工作消息到队列去,具有Listener类的Consumer能够从工作队列中获得一个工作情况的消息,这个消息被这个消费者消费掉之后 ...

  2. what is SVD and how to calculate it

    http://web.mit.edu/be.400/www/SVD/Singular_Value_Decomposition.htm SVD是研究地震波运动极性化的一个方法.

  3. 百度地图结合echarts并添加行政区块

    作者:LJaer链接:https://www.zhihu.com/question/49251513/answer/125728764来源:知乎<!DOCTYPE html> <ht ...

  4. echo, print, print_r

    echo 不是函数,没有返回值,因此只是用作输出的话会更快 print 和 print_r 有返回值,区别在于: print 用于打印一个字符串,print_r 可以打印一些复合类型,如: $arr= ...

  5. Extjs,Git,插件....学习网址

    详细的extjs讲解http://wenku.baidu.com/view/e98a781352d380eb62946de4.html 博客 http://www.cnblogs.com/iamlil ...

  6. 【转】C#多线程

    C#中的多线程编程 C#是.Net平台的通用开发工具,它能够建造所有的.Net应用.在.Net中所有线程都运行在应用程序域(AppDomain)中,这也许让你想到Win32进程,实际上它们还是有很大的 ...

  7. 基于eclipse-java的平台上搭建安卓开发环境

    首先感谢好人的分享!http://www.mamicode.com/info-detail-516839.html 系统:windows 7 若想直接安装eclipse—android的,请启动如下传 ...

  8. CUDA ---共享存储器

    原文地址:http://www.cnblogs.com/1024incn/p/4605502.html shared memory在之前的博文有些介绍,这部分会专门讲解其内容.在global Memo ...

  9. RunLoop笔记

    1.Runloop基础知识 - 1.1 字面意思 a 运行循环 b 跑圈 - 1.2 基本作用(作用重大) a 保持程序的持续运行(ios程序为什么能一直活着不会死) b 处理app中的各种事件(比如 ...

  10. NOIP 考前 队列复习

    BZOJ 1127 #include <cstdio> #include <cstring> #include <iostream> #include <al ...