题目描述

小 Q 最终还是过了独木桥。 前方的地上散落着 B 朵樱花,此时刮起了风,便引来一场樱花雨。 樱花雨一共持续了 N 秒。每一秒都会有 A 朵樱花飘落。小 Q 细心的记录了每一秒时间 后地上樱花的数目,并将其转换成了二进制。小 Q 想请你统计一下这些二进制数一共有多 少个 1。

输入

第一行一个 T 为数据组数。接下来 T 行,每行有 A、B、N,含义如题目所述。 输出 输出 T 行,每行一个整数为对应的答案。

样例输入

2

7 4 1

5 8 2

样例输出

3

5

样例说明

对于第一组样例,初始有 4 朵樱花, 一秒后,共 11 朵樱花,二进制为 1011,答案为 3 对于第二组样例,初始有 8 朵樱花, 一秒后,共 13 朵樱花,二进制为 1101; 两秒后,共 18 朵樱花,二进制为 10010,答案为 3 + 2 = 5

数据规模与约定

对于 30%的数据, 2<=N<=10^3

对于 60%的数据, 2<=N<=10^6

对于 100%的数据, 2<=N<=10^9 ,1<= T <= 20 ,  1<= A <=10 ^4,  1<= B <=10^16 资源限制 每个测试点空间限制 256MB,时间限制 1s。 一共 10 个测试点,满分 100 分

思路:

依次统计二进制等差数列的每一位上分别共有多少个 1 。 对于这一等差数列 B+A,B+A*2,B+A*3,…,B+A*N,显然第 i 项与第 2^K+i 项在第 K 位上的数字相同。 于是,可以将原数列按位拆成循环节统计。 另外,每一个循环节内连续的几个 0 或几个 1 的长度可以用 O(1)的时间复杂度求出。 这样便以 O(A)的时间复杂度和 O(1)的空间复杂度解决了这道题。

代码:

#include<iostream>
#include<cstdio>
using namespace std;
int T;
int f[1<<18];
long long A,B,N,ans;
long long work(long long x,long long wei)
{
long long res=0;
for(long long i=1;i<=x;++i)
{
if((B+A*i)%wei<(wei>>1))
{
i=min(x,i+((wei>>1)-(B+A*i)%wei-1)/A);
}
else
{
long long tmp=min(x,i+(wei-(B+A*i)%wei-1)/A);
res+=tmp-i+1;i=tmp;
}
}
return res;
}
int main()
{
#ifdef yilnr
#else
freopen("flowers.in","r",stdin);
freopen("flowers.out","w",stdout);
#endif
cin>>T;
while(T--)
{
ans=0;
scanf("%lld%lld%lld",&A,&B,&N);
for(long long i=2;i<=(B+A*N)<<1;i<<=1)
{
if(N/i)ans+=N/i*work(i,i);
ans+=work(N%i,i);
}
printf("%lld\n",ans);
}
fclose(stdin);fclose(stdout);
return 0;
}

【csp模拟赛3】flowers.cpp--循环节的更多相关文章

  1. CSP模拟赛游记

    时间:2019.10.5 考试时间:100分钟(连正式考试时间的一半还没有到)题目:由于某些原因不能公开. 由于第一次接触NOIinux系统所以连怎么建文件夹,调字体,如何编译都不知道,考试的前半小时 ...

  2. 【csp模拟赛4】 珠江夜游 (cruise.cpp)-二分,贪心

    Problem 1 珠江夜游 (cruise.cpp) [题目描述] 小 Z 放假后难得来一趟广州游玩,当然要吃遍广州各路美食小吃然后再 到珠江新城看看远近闻名的小蛮腰啦!可当小 Z 一路吃吃吃以后, ...

  3. 【csp模拟赛4】基站建设 (station.cpp)

    [题目描述] 小 Z 的爸爸是一位通信工程师,他所在的通信公司最近接到了一个新的通 信工程建设任务,他们需要在 C 城建设一批新的基站. C 城的城市规划做得非常好,整个城市被规整地划分为 8 行 8 ...

  4. 【csp模拟赛5】限制 (restrict.cpp)--数学

    自己看吧: 爆搜代码: //春水初涨-春林初盛-春风十里-不如你 //----hzwer // 这是啥子题,读不懂-- //题意有问题 -- #include<iostream> #inc ...

  5. 【csp模拟赛5】购物(shopping.cpp)--常规

    多项式,因为每次的x相同,所以把a和b相加就行了,然后找对称轴,找离对称轴最近的整数点,然而我却写了个暴力,没看x #include <iostream> #include <cst ...

  6. 【csp模拟赛4】旅行计划 (travelling.cpp)--欧拉回路

    [题目描述] 小 Z 打算趁着暑假,开启他的旅行计划.但与其他同学不同的是,小 Z 旅 行时并不关心到达了哪个网红景点打了哪些卡.小 Z 更关注沿路的风光,而且 小 Z 觉得,尽管多次到达同一个地方, ...

  7. 【csp模拟赛1】铁路网络 (network.cpp)

    [题目描述] 在暑假来临之际,小 Z 的地理老师布置了一个暑假作业,让同学们暑假期间 了解一下 C 国的铁路发展史.小 Z 在多番查证资料后发现,C 国在铁路发展初期, 铁路网络有着一个严密规整的结构 ...

  8. 【csp模拟赛1】不服来战 (challenge.cpp)

    [题目描述] 最近小 Z 和他的朋友都迷上了一款手机游戏:不服来战. 游戏的设定十分简单,在游戏开始时,会给出一排共 N 个灯,有的灯是开着 的有的是关着的,每个灯都有一个分数.而玩家可以进行任意次操 ...

  9. 【CSP模拟赛】Freda的迷宫(桥)

    题目描述 Freda是一个迷宫爱好者,她利用业余时间建造了许多迷宫.每个迷宫都是由若干房间和走廊构成的,每条走廊都连接着两个不同的房间,两个房间之间最多只有一条走廊直接相连,走廊都是双向通过.  黄昏 ...

随机推荐

  1. 使用Duilib开发Windows软件(2)——控件的基本介绍

    XML 先学习xml https://www.w3cschool.cn/xml/xml-xml-tutorialhc4o1t5m.html 控件 上图是我们下载的NIM_Duilib_Framewor ...

  2. RMAN执行crosscheck archive报错ORA-19633问题处理

    一.问题现象 RMAN connect target /; run { crosscheck archivelog all; } ORA-: control file record is out of ...

  3. 19-MySQL DBA笔记-操作系统、硬件、网络的优化

    第19章 操作系统.硬件.网络的优化 本章将介绍操作系统和硬件的性能优化,对于硬件,我们主要讲述CPU.内存.磁盘阵列及固态硬盘.任何优化,首先都需要有足够的数据支持,对于操作系统下性能数据的收集,这 ...

  4. (二十一)JSP基础

    定义 JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术. JSP这门技术的最大的特点在于,写jsp就像在写html,但它相 ...

  5. (六)Redis之数据结构之sorted-set

    一.常用方法 Sorted-Set和Set的区别 Sorted-Set中的成员在集合中的位置是有序的 添加元素 获得元素 删除元素 范围查询 1和2和3和4 添加/获得/删除元素/范围查询 packa ...

  6. ES6语法 学习

    ECMAScript 6,也被称为ECMAScript 2015是ECMAScript标准的最新版本.6是语言的一个重要更新,并第一次更新语言由于ES5 2009标准.现在主要JavaScript引擎 ...

  7. Django rest-framework框架-组件之分页

    分页: a. 分页,看第n页, 每页显示n条数据 from rest_framework import serializers from api import models from rest_fra ...

  8. 解决包含在label标签下的checkbox在ie8及以下版本点击事件无效果兼容的问题

    问题描述:     在IE8及以下版本时,点击label标签无法自动触发checkbox的click事件,导致无法产生希望的效果. 原HTML代码: <div class="col-s ...

  9. JS中this和call

    首先来了解一下JS中this的原理: 要访问自己的属性就必须使用 this.属性名 1.this总是指向它的直接调用者: var a={ user:'Artimis', fn:function(){ ...

  10. 认识:before和:after伪类

    有时候,我们需要大量的重复代码去实现一个非常简单的功能,这不仅浪费时间,而且效率低下,例如: <div class="aa">你好</div><div ...