下面这题(手打):
题目
题目描述
小 Z 想要拆分一个数。
对于一个数
u,他要找到两个数
v,
w,满足
v,w>1 并且
u=v×w,那么他可以删去
u,并且保留
v,
w,这样他手上就多了一个数。
现在已知小 Z 有一个数
x,表示为
x=a!b!,给定
a,
b,求
x 最多能被小 Z 拆分成多少个数(也就是他最多能够留下几个数)。
输入格式
本题有多组询问。
接下来
T 行,每行两个正整数
a,
b,含义如上。
输出格式
T 行,每行一个值,表示小 Z 最多能得到的数的个数。
说明/提示
1≤T≤2×105,
1≤a<b≤107。
思路是先欧拉筛出每个数的最小质因子
mnpi。
然后令
f1=0,
fi∈prime=1,
fi∈/prime=fmnpi+fmnpii。
然后对于每个
f 做前缀和,即
fi′=i=1∑107fi。
然后答案为
fb′−fa′。
考场上大样例都过了,空间限制 256 MB,实际计算不会 MLE。
但是挂了,挂到几分忘光了,为啥?
还有 arc115e 的考场上的
40 部分分(
1≤n≤2000,
1≤ai≤2000)。
题目
小 Z 有一个序列
{bi},表示每天的运动量上限。
现在小 Z 每天跑步都有一个运动量
ai,必须满足
∀ai≤bi。
但是小 Z 又想要多点花样,所以他想要
{ai} 满足
2≤i≤n,ai=ai−1。
求满足条件的
{ai} 的数量,答案对
109+7 取模。
正难则反,先计算
total=∏bi。
然后计算不合法的,记
fi,j,0/1 为第
i 天运动量为
j,前面没有/有相邻天重复的方案数。
然后转移(
1≤j≤ai,
1≤k≤ai−1):
fi,j,0=∑[k=j]×fi−1,k,0
fi,j,1=fi−1,j,0+∑fi−1,k,1
答案为
total−i=1∑bnfn,i,1。
考场实测过了前三个大样例,结果挂了,挂到几分忘光了。
求问原因,没有代码。