JZOJ3492 数数(count)

我们知道,一个等差数列可以用三个数A,B,N表示成如下形式: 
B+A,B+2A,B+3A⋯B+NA
ztxz16想知道对于一个给定的等差数列,把其中每一项用二进制表示后,一共有多少位是1
A<=1e4,B<=1e16,N<=1e12

分析:

有个很经典的类欧套路,k从0开始

二进制下,第k位是否为1,等于(原数>>k)-2*(原数>>(k+1))

可以把i从1到n变成i从0到n-1,也就是提一个A出来,再做,于是就是类欧板子题。

#include<bits/stdc++.h>
using namespace std; typedef long long ll; ll f(ll a, ll b, ll c, ll n)
{
if(!a) return (b/c)*(n+);
if(a >= c || b >= c) return (f(a%c, b%c, c, n) + n*(n+)/*(a/c) + (n+)*(b/c));
ll m = (a*n+b) / c;
return (n*m - f(c, c-b-, a, m-));
} ll a, b, n; int main()
{
int T;
scanf("%d", &T);
while(T--)
{
scanf("%lld%lld%lld", &a, &b, &n);
ll limit = b + a*n, ans = ;
for(int mi = ; mi <= limit; mi*=) ans += f(a, a+b, mi, n-) - f(a, a+b, mi*, n-)*;
printf("%lld\n", ans);
}
return ;
}

【GDOI2018模拟8.8】超级绵羊异或

求(a) xor (a + b) xor (a + b * 2) xor … xor (a + b * (n - 1))。

对于100%的数据,t<=1e4,a, n<=1e9, b<=1e9;

分析:

还是用上面那一个套路,

写成求和形式,考虑最后第k位的奇偶,即像上题一样,判断每一位的出现次数,对每一位使用类欧。

#include<bits/stdc++.h>
using namespace std; typedef long long ll; ll f(ll a, ll b, ll c, ll n)
{
if(!a) return (b/c)*(n+);
if(a >= c || b >= c) return (f(a%c, b%c, c, n) + n*(n+)/*(a/c) + (n+)*(b/c));
ll m = (a*n+b) / c;
return (n*m - f(c, c-b-, a, m-));
} ll a, b, n; int main()
{
int T;
scanf("%d", &T);
while(T--)
{
scanf("%lld%lld%lld", &n, &a, &b);
ll limit = a + b*(n-), ans = ;
for(int mi = ; mi <= limit; mi*=)
{
ll tmp = f(b, a, mi, n-) - f(b, a, mi*, n-)*;
ans += (tmp&)*mi;
}
printf("%lld\n", ans);
}
return ;
}

BZOJ3817

给定正整数N,R。求

分析:

继续用上面的套路,考虑幂的奇偶会对答案造成不同贡献,本质上是幂的第1位是否为1,即求 $Ans_0$.

因为底数是-1,对布尔式的贡献线性变换一下,搞成1-2*Ans0。

由于sqrt(r)是实数,不能完全当整数处理,

$\begin{align}
f(a,b,c,n) &= \left \lfloor \frac{bx+c}{a} \right \rfloor\frac{n(n+1)}{2} + \sum_{i=1}^{\left \lfloor \frac{bx+d}{a}n \right \rfloor}n-\frac{a}{bx+d}i  \\
&=  \left \lfloor \frac{bx+c}{a} \right \rfloor\frac{n(n+1)}{2}  + \left \lfloor \frac{bx+d}{a} n \right \rfloor n -  \sum_{i=1}^{\left \lfloor \frac{bx+d}{a}n \right \rfloor} \left \lfloor \frac{a}{bx+d}i \right \rfloor
\end{align}$

将后面和式里的东西分母有理化得

$f(a,b,c,n) = S-\sum_{i=1}^{\left \lfloor \frac{bx+d}{a}n \right \rfloor}\left \lfloor \frac{abx-ad}{b^2x^2-d^2}i \right \rfloor = S - f(b^2r-d^2, ab, -ad, \left \lfloor \frac{bx+d}{a}n \right \rfloor)$

于是递归求,类似于辗转相除,递归层数不超过 $log_2n$.

#include<bits/stdc++.h>
using namespace std; typedef long long ll;
ll n, r;
ll gcd(ll a, ll b) { return b ? gcd(b, a % b) : a; } double x;
ll f(ll a, ll b, ll c, ll n)
{
if(!n) return ;
ll t = gcd(a, gcd(b, c)); a/= t, b/=t, c/=t;
ll d = c - (ll)((b*x+c)/a)*a;
ll s = (ll)((b*x+c)/a)*(n+)*n/ + n*(ll)((b*x+d)*n/a);
return s - f(b*b*r-d*d, a*b, -a*d, (ll)((b*x+d)*n/a));
} int main()
{
int T;scanf("%d", &T);
while(T--)
{
scanf("%lld%lld", &n, &r);
x = sqrt(r);
if(x==(int)(x+0.5)) printf("%lld\n", (r&)? ((n&)? - : ) : n);
else printf("%lld\n", n+*f(,,,n)-*f(,,,n));
}
return ;
}

参考链接:

1. https://blog.csdn.net/code92007/article/details/97396823

2. https://blog.csdn.net/lych_cys/article/details/51345089

3. https://www.cnblogs.com/xiao-ju-ruo-xjr/p/7157945.html

JZOJ3492数数&&GDOI2018超级异或绵羊——位&&类欧几里得的更多相关文章

  1. 异数OS-织梦师-异数OS虚拟容器交换机(七) 走进4Tbps网络应用时代,加速5G应用真正落地

    . 异数OS-织梦师-异数OS虚拟容器交换机(七) 走进4Tbps网络应用时代,加速5G应用真正落地 本文来自异数OS社区 github: https://github.com/yds086/Here ...

  2. 洛谷 P2646 数数zzy

    P2646 数数zzy 题目描述 zzy自从数学考试连续跪掉之后,上数学课就从来不认真听了(事实上他以前也不认真听).于是他开始在草稿纸上写写画画,比如写一串奇怪的字符串.然后他决定理♂性♂愉♂悦♂一 ...

  3. 【64测试20161112】【Catalan数】【数论】【扩展欧几里得】【逆】

    Problem: n个人(偶数)排队,排两行,每一行的身高依次递增,且第二行的人的身高大于对应的第一行的人,问有多少种方案.mod 1e9+9 Solution: 这道题由1,2,5,14 应该想到C ...

  4. [BZOJ 3530][Sdoi 2014]数数

    阿拉~好像最近总是做到 AC 自动机的题目呢喵~ 题目的算法似乎马上就能猜到的样子…… AC 自动机 + 数位 dp 先暴力转移出 f[i][j] :表示从 AC 自动机上第 j 号节点走 i 步且不 ...

  5. 【BZOJ】【3530】【SDOI2014】数数

    AC自动机/数位DP orz zyf 好题啊= =同时加深了我对AC自动机(这个应该可以叫Trie图了吧……出边补全!)和数位DP的理解……不过不能自己写出来还真是弱…… /************* ...

  6. BZOJ3530: [Sdoi2014]数数

    3530: [Sdoi2014]数数 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 322  Solved: 188[Submit][Status] ...

  7. 【HDU3530】 [Sdoi2014]数数 (AC自动机+数位DP)

    3530: [Sdoi2014]数数 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 682  Solved: 364 Description 我们称一 ...

  8. COJ 0036 数数happy有多少个?

    数数happy有多少个? 难度级别:B: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 图图是个爱动脑子.观察能力很强的好学生.近期他正学英语 ...

  9. BZOJ 3530: [Sdoi2014]数数 [AC自动机 数位DP]

    3530: [Sdoi2014]数数 题意:\(\le N\)的不含模式串的数字有多少个,\(n=|N| \le 1200\) 考虑数位DP 对于长度\(\le n\)的,普通套路DP\(g[i][j ...

随机推荐

  1. Computer-Hunters——冲刺总结

    Computer-Hunters--冲刺总结 一.作业相关 作业相关 具体描述 所属班级 2019秋福大软件工程实践Z班 作业要求 团队作业第五次-项目冲刺 作业正文 hunter--冲刺总结 团队名 ...

  2. 查看window重启日志

    命令行输入 net statistics WORKSTATION 显示开机时间 如果你今天一直没有关机,但是你看到这个信息显示今天XX点才开始统计数据的说明电脑重启了

  3. centos 安装 oracle11r2

    因为要测试spark链接oracle,所以需要再服务器装oracle 1.下载oracle, 如果自己下载需要注册,比较麻烦,可以直接用如下命令下载 因为zip比较大,建议nohup 后台下载 noh ...

  4. 用友U8合同执行单保存报错,提示“语法错误或违反访问规则”

    问题描述 用户参照合同录入第一阶段的执行单,保存时提示“语法错误或违反访问规则”,其他合同均正常,只有这张合同出现这个问题. 解决过程 语法错误或违反访问规则是SQL Server常见的报错,但其他合 ...

  5. defaults(默认配置)和mergeConfig(合并config方法)

    axios学习笔记defaults(默认配置)和mergeConfig(合并config方法) 源码地址 找到入口文件 axios/lib/axios.js ... var mergeConfig = ...

  6. 开源矿工工具箱新增了ETH反抽水工具

    开源矿工工具箱新增了ETH反抽水工具 —— 将决定使用Claymore挖ETH时拦截的老外的抽水归谁的权力交给矿工 众所周知,所有的挖矿辅助工具都拦截了老外的Claymore内核挖ETH时的内核开发费 ...

  7. Vuex实现状态管理

    Vuex使用总结 1 Vuex简介 Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式,Vuex抽取了各个组件的共享部分,以全局单例模式进行状态的管理.在原生vue中各个组件之间传值使用的 ...

  8. Bootstrap3-导航

    Bootstrap 导航 1. 定义导航组件 基本结构: <!-- 基本导航组件 --> <ul class="nav"> <li class=&qu ...

  9. 微信页面script标签添加crossorigin=“anonymous”导致页面加载失败

    公司一个微信企业号项目,突然出现页面数据加载失败,页面报错信息如下 意思是前端向服务端发送跨域资源请求访问这个js文件,但是服务端并不同意,所以服务端拒绝访问这个地址. 后来发现将crossorigi ...

  10. Mybatis映射文件标签(关于sql)

    Mybatis映射文件 1.接口的全限定名和映射文件的namespace一致 <mapper namespace="com.offcn.dao.UserDao"> 2. ...