标签:lfloor CF1423J right frac 题解 sum rfloor hypothesis left
Link.
Description.
求满足 \(\sum_{i=0}^{+\infty}a_i2^i=m\) 且 \(\forall i\in\mathbb N,a_i\in[0,8)\) 的 \(\{a_i\}\) 数量。
Solution.
没思路
首先,考虑这个 \(\forall i\in \mathbb N,a_i\in[0,8)\) 的限制。
众所周知, \(8=2^3\),可以考虑按照 \(8\) 来分组,往 \(8\) 进制那边考虑。
设其分别为 \(x,y,z\),则有 \(x+2\cdot y+4\cdot z=m\)
发现如果 \(x,y,z\) 确定了,那 \(\{a_i\}\) 就确定了,因为它完全就是个八进制。
题目意思转化成了 \(x+2\cdot y+4\cdot z=m\) 的方案数。
\[\begin{aligned} res&=\sum_{4i\le m}\sum_{2j\le m-4i}1\\ &=\sum_{4i\le m}\left(\left\lfloor\frac{m-4i}{2}\right\rfloor+1\right)\\ &=\sum_{4i\le m}\left(\left\lfloor\frac{m}{2}\right\rfloor+1-2i\right)\\ &=\left(\left\lfloor\frac{m}{2}\right\rfloor+1\right)\cdot\left(\left\lfloor\frac{m}{4}\right\rfloor+1\right)-\left(\left\lfloor\frac{m}{4}\right\rfloor+1\right)\cdot\left\lfloor\frac{m}{4}\right\rfloor\\ \end{aligned} \]Coding.
点击查看没脑子代码
//是啊,你就是那只鬼了,所以被你碰到以后,就轮到我变成鬼了{{{
#include<bits/stdc++.h>
using namespace std;typedef long long ll;
template<typename T>inline void read(T &x)
{
x=0;char c=getchar(),bz=0;
for(;c<48||c>57;c=getchar()) if(!(c^45)) bz=1;
for(;c>=48&&c<=57;c=getchar()) x=(x<<1)+(x<<3)+(c^48);
bz?x=-x:x;
}/*}}}*/
const int P=1e9+7;
inline void solve()
{
ll n,x,y;read(n),x=n/2%P,y=n/4%P;
printf("%lld\n",((x+1)*(y+1)%P-(y+1)*y%P+P)%P);
}
int main() {int Ca;for(read(Ca);Ca--;) solve();return 0;}
标签:lfloor,CF1423J,right,frac,题解,sum,rfloor,hypothesis,left 来源: https://www.cnblogs.com/pealfrog/p/15116183.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。