题意

\(q(1 \le q \le 10000)\)次询问,每一次求\((x^2+x+1)^n\)的第\(k\)项系数模3。

分析

听说正解是\(\binom{2n}{m} (m \% 2+1)\),表示不会。

我来一个说一个我yy出来的玄学做法

\[(x^2+x+1)^n = \sum_{i=0}^{n} \binom{n}{i} \sum_{j=0}^{i} \binom{i}{j} x^{i+j}
\]

第\(k\)项的系数就是\(\sum_{i=0}^{k} \binom{n}{i} \binom{i}{k-i} \mod \ 3\)

$$
\begin{align}
& \sum_{i=0}^{k} \binom{n}{i} \binom{i}{k-i} \mod \ 3 \\
= & \sum_{j=0}^{2} \sum_{i=0}^{\left \lfloor \frac{k-j}{3} \right \rfloor} \binom{n \% 3}{(3i+j) \% 3} \binom{\left \lfloor \frac{n}{3} \right \rfloor}{\left \lfloor \frac{3i+j}{3} \right \rfloor} \binom{(3i+j) \% 3}{(k-(3i+j)) \% 3} \binom{\left \lfloor \frac{3i+j}{3} \right \rfloor}{\left \lfloor \frac{k-(3i+j)}{3} \right \rfloor} \mod \ 3 \\
= & \sum_{j=0}^{2} \binom{n \% 3}{j} \binom{j}{(k-j) \% 3} \sum_{i=0}^{\left \lfloor \frac{k-j}{3} \right \rfloor} \binom{\left \lfloor \frac{n}{3} \right \rfloor}{i} \binom{i}{\left \lfloor \frac{k-j}{3} \right \rfloor-i} \mod \ 3\\
\end{align}
$$

然后变成3个子问题,由于可以根据\(\binom{n%3}{j} \binom{j}{(k-j)%3}\)是否为\(0\)还有\(\left \lfloor \frac{k-1}{3} \right \rfloor == \left \lfloor \frac{k-2}{3} \right \rfloor\)之类的强力减枝,所以很快。

虽然理论复杂度是单次查询\(O(k)\)的,不过最后我还是过了= =很快= =

复杂度属于玄学。

题解

分析里说得很清楚了。

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int C(int n, int m) {
return n<m?0:(n==0?1:(n==1?1:(m==1?2:1)));
}
int lucas(ll n, ll m) {
return m==0?1:(m==1?n%3:(n%3*((n-1)%3)*2%3));
}
int f(ll n, ll k) {
if(k<=2) {
int ans=0;
for(int i=0; i<=k; ++i) {
ans+=lucas(n, i)*lucas(i, k-i);
}
return ans%3;
}
int t1=C(n%3, 0)*C(0, (k-0)%3)%3, nx1=t1==0?0:f(n/3, (k-0)/3),
t2=C(n%3, 1)*C(1, (k-1)%3)%3, nx2=t2==0?0:((t1&&(k%3>0))?nx1:f(n/3, (k-1)/3)),
t3=C(n%3, 2)*C(2, (k-2)%3)%3, nx3=t3==0?0:((t2&&(k%3>1))?nx2:f(n/3, (k-2)/3));
return (t1*nx1+t2*nx2+t3*nx3)%3;
}
ll n, k;
int main() {
int T;
scanf("%d", &T);
while(T--) {
scanf("%lld%lld", &n, &k);
printf("%d\n", f(n, k));
}
return 0;
}

【BZOJ】1436: Poi2003 Trinomial的更多相关文章

  1. 【BZOJ】3052: [wc2013]糖果公园

    http://www.lydsy.com/JudgeOnline/problem.php?id=3052 题意:n个带颜色的点(m种),q次询问,每次询问x到y的路径上sum{w[次数]*v[颜色]} ...

  2. 【BZOJ】3319: 黑白树

    http://www.lydsy.com/JudgeOnline/problem.php?id=3319 题意:给一棵n节点的树(n<=1e6),m个操作(m<=1e6),每次操作有两种: ...

  3. 【BZOJ】3319: 黑白树(并查集+特殊的技巧/-树链剖分+线段树)

    http://www.lydsy.com/JudgeOnline/problem.php?id=3319 以为是模板题就复习了下hld............................. 然后n ...

  4. 【BZOJ】1013: [JSOI2008]球形空间产生器sphere

    [BZOJ]1013: [JSOI2008]球形空间产生器sphere 题意:给n+1个n维的点的坐标,要你求出一个到这n+1个点距离相等的点的坐标: 思路:高斯消元即第i个点和第i+1个点处理出一个 ...

  5. 【BZOJ】1002:轮状病毒(基尔霍夫矩阵【附公式推导】或打表)

    Description 轮状病毒有很多变种,所有轮状病毒的变种都是从一个轮状基产生的.一个N轮状基由圆环上N个不同的基原子和圆心处一个核原子构成的,2个原子之间的边表示这2个原子之间的信息通道.如下图 ...

  6. 【BZOJ】【3083】遥远的国度

    树链剖分/dfs序 其实过了[BZOJ][4034][HAOI2015]T2以后就好搞了…… 链修改+子树查询+换根 其实静态树的换根直接树链剖分就可以搞了…… 因为其实只有一样变了:子树 如果roo ...

  7. 【BZOJ】【2434】【NOI2011】阿狸的打字机

    AC自动机+DFS序+BIT 好题啊……orz PoPoQQQ 大爷 一道相似的题目:[BZOJ][3172][TJOI2013]单词 那道题也是在fail树上数有多少个点,只不过这题是在x的fail ...

  8. 【BZOJ】【2738】&【Tsinsen】【A1333】矩阵乘法

    整体二分+树状数组 过了[BZOJ][2527][POI2011]Meteors以后这题就没那么难啦~ 关键是[从小到大]依次插入数字,然后整体二分每个查询的第k大是在第几次插入中被插入的……嗯大概就 ...

  9. 【BZOJ】【3170】【TJOI2103】松鼠聚会

    切比雪夫距离+曼哈顿距离 题解:http://www.cnblogs.com/zyfzyf/p/4105456.html 其实应该先做这题再做[BZOJ][3210]花神的浇花集会的吧…… 我们发现d ...

随机推荐

  1. Pyqt QListWidget之缩略图列表

    QListWidget 可以设置模型setViewMode  当setViewMode值为QListView.IconMode 表示Icon模式 以下代码来自Pyqt Example #!/usr/b ...

  2. freemarker 实现对URL的安全编码

    [#setting url_escaping_charset='utf-8'] ${yourstr?url}

  3. ThinkPHP3.2判断手机端访问并设置默认访问模块的方法

    ThinkPHP3.2判断是否为手机端访问并跳转到另一个模块的方法 目录结构 公共模块Common,Home模块,Mobile模块 配置Application/Common/Conf/config.p ...

  4. 一些常用的C++标准函数

    一些常用的C++标准函数 double atof(const char* p); int atoi(const char* p); long atol(const char* p); cstdlib ...

  5. 剑指offer系列——二维数组中,每行从左到右递增,每列从上到下递增,设计算法找其中的一个数

    题目:二维数组中,每行从左到右递增,每列从上到下递增,设计一个算法,找其中的一个数 分析: 二维数组这里把它看作一个矩形结构,如图所示: 1 2 8 2 4 9 12 4 7 10 13 6 8 11 ...

  6. 内核函数KiFastCallEntry

    KiFastCallEntry() 机制分析 概述 Win32 子系统 API 调用 ntdll!ZwWriteFile() 函数 ntdll!KiFastSystemCall() 函数 _KUSER ...

  7. Android 蹲坑的疑难杂症集锦一

    各位看官老爷子你们好,我就是那个挖坑不埋,还喜欢开新矿的小喵同志. 问大家一个问题,在Github上找项目的时候,看到中文简介说明你们是不是觉得这个项目很low不屑一顾? 最近朋友无意中说,在Gith ...

  8. ffmpeg处理RTMP流媒体的命令 发送流媒体的命令(UDP,RTP,RTMP)

    将文件当做直播送至live ffmpeg -re -i localFile.mp4 -c copy -f flv rtmp://server/live/streamName   re限制输出速率,按照 ...

  9. ASP.NET中Url编码解码

    今天遇到Url编码解码的问题,纠结了一天的时间,结果上网一查才发现太二了我们. 同事写的代码把url用HttpUtility.UrlEncode编码和解码了,本地测试没有问题,部署到服务器上就提示转码 ...

  10. Android拓展系列(12)--使用Gradle发布aar项目到JCenter仓库

    目的 发布自己的android library(也就是aar)到公共的jcenter仓库,所有的人都能用gradle最简单的方式引用. 为什么选择jcenter,它兼容maven,而且支持更多形式仓库 ...