CF1928C Physical Education Lesson 题解
CF1928C Physical Education Lesson
我们发现,每 \(2k-2\) 个数构成了一个周期。其中,前 \(k\) 个数为前周期,后 \(k-2\) 个数为后周期。我们对于 \(x\) 所处的周期进行分类讨论。
当 \(x\) 在前周期时,它是周期中的第 \(x\) 个元素。将总数 \(n\) 减去 \(x\),剩下的数一定是由若干个完整的周期组成。枚举它的约数,我们可以用这个约数解出 \(k\) 的值。只有 \(k\) 为整数且 \(k\ge n\),才能算作一个解,因为前周期最大的数是 \(k\)。
当 \(x\) 在后周期时,它是周期中的第 \(2k-2-x+2\) 个元素。将总数 \(n\) 减去 \(2k-2-x+2\),剩下的数 \((n+x-2)-(2k-2)\) 一定是由若干个完整的周期组成。我们发现,减去的 \(2k-2\) 正好是我们要枚举的约数,并不影响 \((n+x-2)\) 对 \(2k-2\) 的整除性。所以我们直接枚举 \((n+x-2)\) 的约数,我们可以用这个约数解出 \(k\) 的值。只有 \(k\) 为整数且 \(k\gt n\),才能算作一个解,因为后周期最大的数是 \(k-1\)。
注意 \(x\) 在后周期时,\(x\ne1\),因为我们发现后周期没有 \(1\)。
#include <bits/stdc++.h>
using namespace std;
long long t,x,n;
int main()
{
scanf("%lld",&t);
while(t--)
{
long long ans=0,now=0;
scanf("%lld%lld",&x,&n);
now=x-n;
for(long long i=1;i*i<=now;i++)
if(now%i==0)
{
if(i%2==0&&(i+2)/2>=n)ans++;
if((now/i)!=i&&(now/i)%2==0&&((now/i)+2)/2>=n)ans++;
}
now=x+n-2;
if(n!=1)
for(long long i=1;i*i<=now;i++)
if(now%i==0)
{
if(i%2==0&&(i+2)/2>n)ans++;
if((now/i)!=i&&(now/i)%2==0&&((now/i)+2)/2>n)ans++;
}
printf("%lld\n",ans);
}
return 0;
}
CF1928C Physical Education Lesson 题解的更多相关文章
- CF915E Physical Education Lessons 动态开点线段树
题目链接 CF915E Physical Education Lessons 题解 动态开点线段树 代码 /* 动态开点线段树 */ #include<cstdio> #include&l ...
- 【题解】Luogu CF915E Physical Education Lessons
原题传送门:CF915E Physical Education Lessons 前置芝士:珂朵莉树 窝博客里对珂朵莉树的介绍 没什么好说的自己看看吧 这道题很简单啊 每个操作就是区间赋值,顺带把总和修 ...
- CF915E Physical Education Lessons
题意: Alex高中毕业了,他现在是大学新生.虽然他学习编程,但他还是要上体育课,这对他来说完全是一个意外.快要期末了,但是不幸的Alex的体育学分还是零蛋! Alex可不希望被开除,他想知道到期末还 ...
- 【CodeForces】915 E. Physical Education Lessons 线段树
[题目]E. Physical Education Lessons [题意]10^9范围的区间覆盖,至多3*10^5次区间询问. [算法]线段树 [题解]每次询问至多增加两段区间,提前括号分段后线段树 ...
- Codeforces 915 E Physical Education Lessons
题目描述 This year Alex has finished school, and now he is a first-year student of Berland State Univers ...
- Physical Education Lessons CodeForces - 915E (动态开点线段树)
Physical Education Lessons CodeForces - 915E This year Alex has finished school, and now he is a fir ...
- E. Physical Education Lessons 动态开辟线段树区间更新
E. Physical Education Lessons time limit per test 1 second memory limit per test 256 megabytes input ...
- Codeforces 915E Physical Education Lessons
原题传送门 我承认,比赛的时候在C题上卡了好久(最后也不会),15min水掉D后(最后还FST了..),看到E时已经只剩15min了.尽管一眼看出是离散化+线段树的裸题,但是没有时间写,实在尴尬. 赛 ...
- Codeforces 915E. Physical Education Lessons(动态开点线段树)
E. Physical Education Lessons 题目:一段长度为n的区间初始全为1,每次成段赋值0或1,求每次操作后的区间总和.(n<=1e9,q<=3e5) 题意:用线段树做 ...
- 线段树 离散化 E. Infinite Inversions E. Physical Education Lessons
题目一:E. Infinite Inversions 这个题目没什么思维量,还比较简单,就是离散化要加上每一个值的后面一个值,然后每一个值放进去的不是1 ,而是这个值与下一个点的差值. 因为这个数代表 ...
随机推荐
- 理解tomcat中的BIO、NIO、AIO、ARP
理解tomcat中的BIO.NIO.AIO.ARP tomcat作为springboot中默认的web容器,了解tomcat的运转可以帮助我们更好的去调整tomcat的参数达到更好的性能 前置知识 I ...
- FreeSWITCH中SIP网关(Gateway)操作
freeswitch是一款简单好用的VOIP开源软交换平台. 以下是一篇关于FreeSWITCH中SIP网关(Gateway)操作的技术指南,基于提供的官方文档内容整理: 一.网关生命周期管理 1. ...
- win自带的远程桌面内网也能用简直太香了,mstsc配置方法以及解决由于没有远程桌面授权服务器可以提供许可证
以前都是用mstsc命令远程连接控制有公网ip的服务器,最近内网设置了下也能用简直太香了,终于不用担心某desk限时长限次数了: 配置方法: 右键 计算机 选择属性,点击远程设置,在远程协助框中勾选 ...
- Streamlit快速入门指南
theme: orange Streamlit是一个Python库,允许您创建交互式的数据科学和机器学习Web应用程序. Streamlit介绍 Streamlit是一个Python库,允许您创建交互 ...
- 记录一次SpringBoot + Vue前后分离项目的部署流程
前言 本教程使用黑马 SpringBoot3+Vue3全套视频教程 大事件项目作为前后端代码. 前置需要: mysql jdk redis nginx linux环境 打包 前端 构建项目命令 npm ...
- Linux还能拯救U盘???---U盘的起死回生
作死;): 今天U盘在处理某些东西的时候,我性子急,直接把进程结束了,然后,就悲剧了( ̄ 'i  ̄;) 插到电脑上,一插就卡,一点就未响应,未响应.... PE系统打开还是老样子... 右键想格式化, ...
- Socket实践:使用云服务器当代理连接公司内网,简单实现跨局域网调用部署在公司局域网里的api接口
公司的代码是可以在公网上访问到,但这些代码里用了部署在公司局域网的api.如果有时想在家写代码看看这个wpf软件的运行情况,就运行不起来,因为主要业务都得连接公司局域网的api接口.我就想用自己的阿里 ...
- 信息资源管理文字题之“IT服务管理的核心流程和具体内容”
一.为了充分利用ERP信息系统资源,LX集团采用了各种先进的信息系统管理概念和方法,包括IT服务管理. 要求:说明IT服务管理流程包括那两大核心类别,分别说明他们个包含哪些具体流程 二.答案 答:两大 ...
- Vue3 组件通信方式小结
也是零零散散用 vue3 来搞一些前端的页面, 每次在组件通信, 主要是传数据这块总是忘记, 大多无非父传子, 子传父等情况, 这里再来做一个小结. 父传子 Props 最常见的就是父组件给子组件传递 ...
- K8s新手系列之Pod的基本存储
概念 官方文档:https://kubernetes.io/zh-cn/docs/tasks/configure-pod-container/configure-volume-storage/ 卷:h ...