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. markdown格式接口文档模板

    源文件 https://files.cnblogs.com/files/bincoding/%E6%8E%A5%E5%8F%A3%E6%96%87%E6%A1%A3.zip 目录 测试接口 查询指定项 ...

  2. Python-lambda使用

    什么是lambda 匿名函数,不需要命名的函数: 语法 lambda 参数 : 返回值 g = lambda x: 2*x+1 g(2) >5

  3. Spring 常犯的十大错误,这坑你踩过吗?

    阅读本文大概需要 9 分钟. 1.错误一:太过关注底层 我们正在解决这个常见错误,是因为 “非我所创” 综合症在软件开发领域很是常见.症状包括经常重写一些常见的代码,很多开发人员都有这种症状. 虽然理 ...

  4. SpringBoot第三篇:配置文件详解二

    作者:追梦1819 原文:https://www.cnblogs.com/yanfei1819/p/10615605.html 版权声明:本文为博主原创文章,转载请附上博文链接! 前言   本文主要讲 ...

  5. python]用eval强制将字符串转换为字典变量时候出错:NameError: name 'null' is not defined[python]用eval函数 字符串转dict

    本博客已搬家至个人网站 在路上 - On the way 下面的 技术 分类. 你可以通过点击 更新帖子 [已解决]Python中,用eval强制将字符串转换为字典变量时候出错:NameError: ...

  6. 一个小巧,也很nice的“小日历”--一个Android App

    一个小巧也很Nice的“小日历” 背景 因为,常用日历记一些事情,Android自带的日历,如果有事情,会显示一个小点,然后点击进去后才能看到事情的具体内容,不是很方便. 所以,写了一个“小日历” 特 ...

  7. dedecms5.7执行PHP代码的用法

    dedecms5.7执行PHP代码的用法 {dede:php} echo 'test'; {/dede:php}

  8. HTTP STATUS 400 – BAD REQUEST ,SPRINGMVC错误

    400大多为前台传的数据于后台接受数据不符合,注意Date数据类型最容易错. 然后需要调用实体类的空参构造方法,,注意创建了有参构造方法后,创建一个空参构造方法.

  9. thinkphp路由配置route.php

    路由设置配置 打开route.php  引入Route控制器类(use think\Route;) 设置路由-->  Route::rule('路由表达式','路由地址','请求类型','路由参 ...

  10. Solr核心特性【启动机制,配置管理,请求管理】

    一.启动机制 Solr作为一个Java Web应用默认运行在Jetty上,使用全局Java属性[solr.solr.home]来定位配置文件的根目录.在启动时,Solr会扫描主目录下包含core.pr ...