数列

jzoj 2752

题目大意:

给你一个正整数n(有多组数据),让你把它分为一个连续的正整数列之和(长度大于1),然你求着个数列最短的长度,如果这个序列不存在,那输出-1

输入样例

9
2

输出样例

2
-1

数据范围

对于所有数据,n≤263n≤26^3n≤263。

解题思路

这道题我们要分类讨论
我们先说奇数:
1很显然是不可能的就是-1
大于1的整数可以分为n/2n/2n/2和n/2+1n/2+1n/2+1
然后是偶数:
我们又要 分类讨论:
我们设这个序列是a1,a2...an−1,an,X,bn,bn−1...b2,b1a_1,a_2...a_{n-1},a_n,X,b_n,b_{n-1}...b_2,b_1a1​,a2​...an−1​,an​,X,bn​,bn−1​...b2​,b1​
X是中间数,那中间数×××长度等于输入的N
如果序列长度是偶数
那X就是一个小数(x.5),且bn=an+1b_n=a_n+1bn​=an​+1
我们就把a1a_1a1​和b1b_1b1​,ana_nan​和bnb_nbn​分为一组,以此类推
那每一组都是奇数,就没有偶数因子
我们把N分解质因子,奇数全放在每一组处,所有2放在长度
因为2不能放在每一组处,而如果把某些奇数放在长度处,那把2放在每一组处,就可以行成更短的奇数序列了,那就不可能是最优的
然后我们枚举奇数的长度(具体实现看代码)
每一次求出长度我们还要判断有没有小于等于0(就看中间数是否大于长度的一半,因为要从中间数往左一半的长度)

代码

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define ll long long
using namespace std;
ll n, m, i, ans;
int main()
{while(cin>>n){ans = -1;if (n > 1 && (n&1)) ans = 2;//奇数if (!(n&1))//偶数{m = n;while(!(m&1)) m >>= 1;//提取奇数因子总和if (m / 2 >= n / m) ans = n / m * 2;//每一组是m,判断有没有出界就用前一个数m/2(后一个数是m/2+1)//有n/m组,一组有两个数,长度是n/m*2,那n/m就是长度一半i = 3;//枚举奇数for (; i * i <= m && (ans == -1 || i < ans); i += 2)//要判断是否枚举的更优,且只枚举到sqrt(m),因为如果大于sqrt(m)且有答案,那长度和中间数的奇数因子,掉反那会更优if (m % i == 0 && n / i >= (i + 1) / 2)//能整除,i是长度,中间数要把偶数因子也算进去,就是n/i,因为中间数也有一个长度,所以要加一ans = i;if (m != 1 && n / m >= (m + 1) / 2 && (ans == -1 || m < ans))//以m为长度的情况ans = m;}printf("%lld\n", ans);}return 0;
}

【数学】数列(jzoj 2752)相关推荐

  1. 高中数学数列技巧解题秒杀视频:数列小题秒杀技巧

    最近有很多同学问我,有没有稍微基础一点的题型秒杀技巧?答案是肯定的,那么今天我来讲一下关于广东数列小题,这题都来源于高考真题,有很多基础一般的同学,在一些题型上总找不到解题思路,那么今天就通过这道题, ...

  2. 高中数学数列公式7种方法(方法全,例子全,归纳细)

    本文作者:vxbomath 大家好,今天讲解高中数学数列通项的 4-12种方法:迭代法.对数变换法.倒数变换法.换元法.阶差法.数学归纳法.不动点法.特征方程法.四种基本数列.下面跟随我一起来来看看. ...

  3. 高考数学数列题目解题技巧(全新的思路)

    作者:vxbomath 数列是高考的重要环节,所以今天还是和同学分享数列的解题方法,从知识结构开始,在从四个方面来讲解数列求和.全新的思路来讲解数列的一些经典题目! 同学们,今天就分享到这里.更多高质 ...

  4. 高中数学数列求前项公式解题技巧(附视频)

    数列是高中数学的重要内容,又是学习高等数学的基础.高考对本章的考查比较全面,等差数列,等比数列的考查每年都不会遗漏.有关数列的试题经常是综合题,经常把数列知识和指数函数.对数函数和不等式的知识综合起来 ...

  5. 高中数学数列解题方法(定义与性质)

    数列作为历年的高考重点考查内容之一,估测试题会出现在数列的知识.函数知识.不等式的知识和解析几何知识等的交汇点处命题,从而使数列试题呈现综合性强.立意新.角度新.难度大的特点.我们通过一下几个点来给同 ...

  6. 高中数学数列重要公式及23个典型的数列专题

    高中数学数列重要公式及23个典型的数列专题(有电子完整版)私信领取. 今天高中数学数列重要公式及23个典型的数列专题分享就到这里了,关注高中数学肖博老师为大家分享更多高中数学知识点和视频教程.

  7. 天籁数学——数列篇(1)

    好久没写博客了,这个系列就来聊聊数学,我们知道数学是一种工具,更是一种思想,在我们的日常生活和工作中都有广泛的应用. 比如算法中有一种叫做"递推思想",转化到数学上来说就是&quo ...

  8. 高中数学数列错位相减压轴大题_错位相减法秒杀公式

    错位相减法在数列求和部分属于高频考点,同学们大都会用,但是对结果总有些不确定.我们知道,等比数列前项和公式的推导方法用的是"错位相减法".在近几年的高考中,涉及到错位相减法的试题有 ...

  9. 高中数学数列解题:技巧数列大题—错位相减

    本文原作者:vxiaobo2018 大家好,我们今天来讲一下数列大题第二问主要考察的是裂项相消和错位相减求和,裂项相消考察的是思维方式,错位相减考察的是计算能力.那么老师今天讲一种技巧,大家只要把技巧 ...

最新文章

  1. ASP.NET Core 认证与授权[4]:JwtBearer认证
  2. pcf8523_PCF上的Spring Cloud合同和Spring Cloud Services
  3. 【应用】如何更好的简化工业现场采集控制?
  4. mysql系列_Mysql系列(三)—— Mysql字符集和比较规则
  5. linux go missing git command,安装beego出现go: missing Git command
  6. Android 自定义ViewPager设置屏蔽左右滑动事件
  7. Eclipse调试进入JDK源码
  8. 闪光灯slave是什么意思_闪光灯实战讲解 | 室内光线+闪光灯使用配合=完美光效...
  9. 为什么你学HTML5前端这么久,水平还是烂成渣?
  10. Lync Server 2010 权限相关
  11. Word2Vec在中文的应用
  12. pyuic4和pyrcc4d的差别
  13. Python Dict笔记
  14. 让油猴脚本只执行一次
  15. rxbus 源码_Rxbus事件交互
  16. 分布式架构——Gossip 协议详解
  17. bzoj1597: [Usaco2008 Mar]土地购买
  18. 戈登贝尔奖是超级计算机应用的最高奖,中国首获高性能计算应用领域最高奖戈登贝尔奖...
  19. Typora图片显示不出来
  20. python的easyocr图像文字识别

热门文章

  1. ajax上传文件 获取失败,Ajax上传文件/照片时报错TypeError :Illegal invocation的解决方法...
  2. c语言 gbk字模点阵数组,GBK点阵显示字库的制作和使用
  3. java类同步_Java中方法,对象,类的同步
  4. 后端学习 - Java容器
  5. 「offer来了」从基础配置到高级配置,16大知识点带你巩固webpack知识体系
  6. UVA - 514 Rails-栈
  7. C++set容器-查找和统计
  8. 第一讲 工作区和GOPATH
  9. 使用Java查询Sql Server数据库
  10. 【BZOJ3930】选数(莫比乌斯反演倍数形式,杜教筛)