bzoj 4961: 除除除
Description
Input
Output
#include<cstdio>
typedef unsigned int u32;
typedef unsigned long long u64;
u64 pp[];
const u64 _eq=;
const u32 P=1e9+;
struct num{
u64 v0,v1,v2;
void push(u32 x){
v0=v0*+x,v1*=,v2*=;
v1+=v0>>,v0=u32(v0);
v2+=v1>>,v1=u32(v1);
}
bool div(u32 x){
u64 a0=v0,a1=v1,a2=v2;
a1+=a2%x<<,a2/=x;
a0+=a1%x<<,a1/=x;
if(a0%x)return ;
v0=a0/x,v1=a1,v2=a2;
return ;
}
bool read(){
v0=v1=v2=;
int c=getchar();
while(c<){
if(c<)return ;
c=getchar();
}
while(c>)push(c-),c=getchar();
return ;
}
};
int _(){
int x=,c=getchar();
while(c<)c=getchar();
while(c>)x=x*+c-,c=getchar();
return x;
}
const u32 M=<<;
struct hmp{
u64 hx[M];
int hy[M],y0;
int&operator[](u64 x){
if(!x)return y0;
int w=x&(M-);
while(hx[w]){
if(hx[w]==x)return hy[w];
w=(w+)&(M-);
}
hx[w]=x;
return hy[w];
}
}H;
int ps[]={,,,,,,,,,,,,,,,,,,,,};
int ss[];
u32 iv[],va=;
u32 inv(u32 a){
if(a<=)return iv[a];
u32 v=;
for(u32 n=P-;n;n>>=,a=u64(a)*a%P)if(n&)v=u64(v)*a%P;
return v;
}
void dfs(int w,int d,double s,u64 h){
if(w){
u64 h1=h,s0=;
u32 c=;
for(int i=;i<w;++i){
int x=ss[i];
c*=(x+);
s0+=H[h1+pp[x-]-pp[x]];
h1+=(_eq-)*pp[x];
}
va+=H[h1]=(s0+c)%P*inv(c-)%P;
for(int i=w-;i>=;--i){
int x=ss[i];
u64 h2=h1+(-_eq)*pp[x];
H[h2]=(H[h1]+H[h2+pp[x-]-pp[x]])%P;
h1=h2;
}
}
for(int i=;i<=d;++i){
s*=ps[w];
if(s>1.01e24)return;
ss[w]=i;
dfs(w+,i,s,h+pp[i]);
}
}
int main(){
num x;
u32 m;
pp[]=;
iv[]=;
for(int i=;i<=;++i)iv[i]=u64(P-P/i)*iv[P%i]%P;
for(u32 i=;i<=;++i)pp[i]=pp[i-]*;
dfs(,,,);
while(x.read()){
u64 h=;
for(m=_();m;--m){
u32 y=_(),t=;
while(x.div(y))++t;
h+=pp[t];
}
printf("%d\n",H[h*_eq]);
}
return ;
}
bzoj 4961: 除除除的更多相关文章
- BZOJ 2127: happiness [最小割]
2127: happiness Time Limit: 51 Sec Memory Limit: 259 MBSubmit: 1815 Solved: 878[Submit][Status][Di ...
- BZOJ 3275: Number
3275: Number Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 874 Solved: 371[Submit][Status][Discus ...
- BZOJ 2879: [Noi2012]美食节
2879: [Noi2012]美食节 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 1834 Solved: 969[Submit][Status] ...
- bzoj 4610 Ceiling Functi
bzoj 4610 Ceiling Functi Description bzoj上的描述有问题 给出\(n\)个长度为\(k\)的数列,将每个数列构成一个二叉搜索树,问有多少颗形态不同的树. Inp ...
- BZOJ 题目整理
bzoj 500题纪念 总结一发题目吧,挑几道题整理一下,(方便拖板子) 1039:每条线段与前一条线段之间的长度的比例和夹角不会因平移.旋转.放缩而改变,所以将每条轨迹改为比例和夹角的序列,复制一份 ...
- 【sdoi2013】森林 BZOJ 3123
Input 第一行包含一个正整数testcase,表示当前测试数据的测试点编号.保证1≤testcase≤20. 第二行包含三个整数N,M,T,分别表示节点数.初始边数.操作数.第三行包含N个非负整数 ...
- 【清华集训】楼房重建 BZOJ 2957
Description 小A的楼房外有一大片施工工地,工地上有N栋待建的楼房.每天,这片工地上的房子拆了又建.建了又拆.他经常无聊地看着窗外发呆,数自己能够看到多少栋房子. 为了简化问题,我们考虑这些 ...
- 【splay】文艺平衡树 BZOJ 3223
Description 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:翻转一个区间,例如原有序序列是5 4 3 2 1,翻转区间是[2,4]的话,结果是5 2 3 ...
- bzoj 刷水
bzoj 3856: Monster 虽然是sb题,,但是要注意h可能<=a,,,开始忘记判了WA得很开心. #include <iostream> #include <cst ...
随机推荐
- 面试题13:在O(1)时间删除链表节点
http://blog.csdn.net/jsqfengbao/article/details/47175249
- 福大软工 1816:项目UML设计(团队作业三)
项目UML设计(团队) 团队信息 团队名:第三视角 各成员学号及姓名 姓名 学号 博客链接 张扬(组长) 031602345 http://www.cnblogs.com/sxZhangYang/p/ ...
- MyEclipse移动开发教程:设置所需配置的iOS应用(一)
MyEclipse个人授权 折扣低至冰点!立即开抢>> [MyEclipse最新版下载] 一.iOS应用程序配置要求 这个进程需要四个需求数据文件: 证书签名请求(CSR)文件 证书签名请 ...
- CUDA ---- Stream and Event
Stream 一般来说,cuda c并行性表现在下面两个层面上: Kernel level Grid level 到目前为止,我们讨论的一直是kernel level的,也就是一个kernel或者一个 ...
- java发生邮件(转)
参考链接:http://www.runoob.com/java/java-sending-email.html package test.mail; import com.sun.mail.util. ...
- slf4j简单使用
一 slf4j+log4j 1.添加依赖 <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-log4j12 --> <d ...
- STL标准库-算法-常用算法
技术在于交流.沟通,本文为博主原创文章转载请注明出处并保持作品的完整性 介绍11种STL标准库的算法,从这11种算法中总结一下算法的基本使用 1.accumulate() 累加 2.for_each( ...
- MySQL配置优化需要避免的误区
Caution: Don't overwrite your entire my.cnf at once when tuning MySQL. One or two changes per restar ...
- iOS8 对开发者来说意味着什么?
今天凌晨,Apple WWDC2014 iOS8 正式推出! 也许,对于广大iOS用户来说,iOS8的创新并不是特别多. 但对于开发者来说,影响却将会是无比巨大的! 正如Apple官网上的广告:Hug ...
- HDU 4240
http://acm.hdu.edu.cn/showproblem.php?pid=4240 题意:求最大流和流量最大的一条路径的流量的比值 题解:流量最大的路径的流量在dinic的dfs每次搜到终点 ...