3329: Xorequ
3329: Xorequ
https://www.lydsy.com/JudgeOnline/problem.php?id=3329
分析:
因为a+b = a^b + ((a&b)<<1)
所以(x&(2x))<<1是0,就是没有相邻的1。然后计算多少x满足没有相邻的1。
第一问:数位dp一下,dp[i][j]到第i位,上一个数是j的方案数。
第二问:一共n位数,只有第n位为1,所以这n位没有限制,f[i]表示到第i位,的方案数,f[i]=f[i-1]+f[i-2]。看第i位是不是1。
代码:
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<iostream>
#include<cctype>
#include<set>
#include<vector>
#include<queue>
#include<map>
#define fi(s) freopen(s,"r",stdin);
#define fo(s) freopen(s,"w",stdout);
using namespace std;
typedef long long LL; inline LL read() {
LL x=,f=;char ch=getchar();for(;!isdigit(ch);ch=getchar())if(ch=='-')f=-;
for(;isdigit(ch);ch=getchar())x=x*+ch-'';return x*f;
} const int mod = 1e9 + ; LL dp[][], num[]; struct Matrix{
int a[][];
void Clear() { memset(a, , sizeof(a)); }
void init() { a[][] = a[][] = a[][] = ; }
Matrix operator * (const Matrix &A) const {
Matrix C; C.Clear();
for (int k=; k<; ++k)
for (int i=; i<; ++i)
for (int j=; j<; ++j)
C.a[i][j] = (C.a[i][j] + 1ll * a[i][k] * A.a[k][j]) % mod;
return C;
}
};
LL dfs(int x,int last,bool lim) {
if (!x) return ;
if (!lim && dp[x][last]) return dp[x][last];
int u = lim ? num[x] : ; // u = lim ? num[x] : 0 !!!
LL res = ;
for (int i=; i<=u; ++i)
if (!last || !i) res += dfs(x - , i, lim && i==u);
if (!lim) dp[x][last] = res;
return res;
}
LL Calc1(LL n) {
int tot = ;
while (n) {
num[++tot] = n & ;
n >>= ;
}
return dfs(tot, , ) - ;
}
LL Calc2(LL n) {
Matrix A; A.Clear(); A.init();
Matrix res; res.Clear(); res.a[][] = res.a[][] = ;
while (n) {
if (n & ) res = res * A;
A = A * A;
n >>= ;
}
return (res.a[][] + res.a[][]) % mod;
}
int main() {
int T = read();
while (T--) {
LL n = read();
printf("%lld\n%lld\n", Calc1(n), Calc2(n));
}
return ;
}
3329: Xorequ的更多相关文章
- BZOJ 3329: Xorequ [数位DP 矩阵乘法]
3329: Xorequ 题意:\(\le n \le 10^18\)和\(\le 2^n\)中满足\(x\oplus 3x = 2x\)的解的个数,第二问模1e9+7 \(x\oplus 2x = ...
- BZOJ 3329 Xorequ (数位DP、矩阵乘法)
手动博客搬家: 本文发表于20181105 23:18:54, 原地址https://blog.csdn.net/suncongbo/article/details/83758728 题目链接 htt ...
- [BZOJ 3329]Xorequ
Description 题库链接 给出 \(n\) ,分别求 \(\leq n\) 和 \(\leq 2^n\) 的满足方程 \[x\oplus 3x=2x\] 的正整数解个数. \(1\leq n\ ...
- BZOJ.3329.Xorequ(数位DP)
题目链接 x^3x=2x -> x^2x=3x 因为a^b+((a&b)<<1)=a+b,x^2x=x+2x,所以x和2x的二进制表示中不存在相邻的1. (或者,因为x+2x ...
- BZOJ 3329 - Xorequ - 数位DP, 矩乘
Solution 发现 $x \ xor \ 2x = 3x$ 仅当 $x$ 的二进制中没有相邻的 $1$ 对于第一个问题就可以进行数位DP 了. 但是对于第二个问题, 我们只能通过递推 打表 来算 ...
- 【BZOJ】3329: Xorequ
[题意]给定方程x^3x=2x,求<=x和<=2^x的满足方程的正整数个数. [算法]数位DP,矩阵快速幂 [题解]异或相当于不进位加法. 移项得,x^2x=3x,又因为x+2x=3x,所 ...
- BZOJ 3329 Xorequ:数位dp + 矩阵快速幂
传送门 题意 现有如下方程:$ x \oplus 3x = 2x $ 其中 $ \oplus $ 表示按位异或. 共 $ T $ 组数据,每组数据给定正整数 $ n $,任务如下: 求出小于等于 $ ...
- bzoj 3329: Xorequ【数位dp+矩阵乘法】
注意第一问不取模!!! 因为a+b=a|b+a&b,a^b=a|b-a&b,所以a+b=a^b+2(a&b) x^3x==2x可根据异或的性质以转成x^2x==3x,根据上面的 ...
- BZOJ 3329 Xorequ 数字DP+矩阵乘法
标题效果:特定n,乞讨[1,n]内[1,2^n]差多少x满足x^3x=2x x^3x=2x相当于x^2x = 3x 和3x=x+2x 和2x=x<<1 因此x满足条件IFFx&(x ...
随机推荐
- RabbitMQ Windows环境搭建
1.0 RabbitMQ是用Erlang语言编写,因此安装RabbitMQ,首先要安装Erlang. Erlang的官网:http://www.erlang.org/ 文件:otp_win64_19. ...
- UVa 12716 - GCD XOR(筛法 + 找规律)
链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- jquery ajax 标准写法
$.ajax({ url:"http://www.microsoft.com", //请求的url地址 dataType:"json", //返回格式为json ...
- 第三章.搭建MyBatis工程环境
1.数据库的准备: 数据库: create DATABASE mybatis: 数据表: CREATE TABLE `user` ( `id` int(10) NOT NULL AUTO_INCREM ...
- halcon 使用elliptic_axis计算规则矩形角度
elliptic_axis算子是用于计算与Region等价椭圆的相关参数的,注意必须使用规则矩形!!!,不规则区域想其他办法比如模板匹配. elliptic_axis (Region, Ra, Rb, ...
- 提交文件到ng-pages分支
一.提交dist文件夹到ng-pages分支 git subtree push --prefix=dist origin gh-pages 二.提交所有文件到ng-pages分支 text git:( ...
- VC++ MFC工程中中如何将一个工程的资源(如对话框)复制到另外一个工程
问题的提出:在工程1中用到的资源,在工程2中已有现成的.即工程1中要用到的对话框和工程2的完全相同,而工程2中对该对话框的布局已设计好.控件变量都绑定好了.但由于该对话框的控件特别多,如果在工程1中再 ...
- PAT——1007. 素数对猜想
让我们定义 dn 为:dn = pn+1 - pn,其中 pi 是第i个素数.显然有 d1=1 且对于n>1有 dn 是偶数.“素数对猜想”认为“存在无穷多对相邻且差为2的素数”. 现给定任意正 ...
- C#制作ActiveX浏览器插件.net
开发环境:VS2008 第一步 创建项目 新建一个项目,选择“Windows窗体控件库”,创建一个用户控件项目“ActiveXDemo”(注意,这里起名不能用中文,否则后面会出问题),里面有个用户控件 ...
- 【Node.js学习笔记】使用Gulp项目自动化构建工具
刚接触node.js,对前端的一些东西还不是很清楚,据说Gulp这东西很强大,先来看看从网上抄的一段关于自动化构建的描述: 在为数众多的中小型软件作坊中,不存在自动化构建和发布工具.构建.交付准备环境 ...