hihocoder1543 SCI表示法

题意:任何一个数可以表示为连续整数相加,问这些连续整数的最大长度

题解:假设左右是l,r,那么(l+r)*(l-r+1)/2就是这段序列的和,枚举2n的所有因子,找到最大的就可以了

我的做法是预处理前缀和,二分找到答案位置然后暴力 。。

#include <bits/stdc++.h>
#define ll long long
#define maxn 100100
using namespace std;
ll a[maxn];
int main(){
    ll T,n;
    cin>>T;
    for(ll i=1;i<=100010;i++) a[i] = i*(i+1)/2;
    while(T--){
        cin>>n;
        ll l=0,r=100001,ans=-1,mid;
        while(l<=r){
            mid = (l+r)>>1;
            if(a[mid]<=n) ans = mid,l = mid+1;
            else r = mid-1;
        }
        if(a[ans] == n) cout<<ans<<endl;
        else{
            for(ll i=ans;i>=1;i--){
                if((n-a[i])%i == 0){
                    cout<<i<<endl;
                    break;
                }
            }
        }
    }
    return 0;
}
时间: 2024-08-07 00:17:38

hihocoder1543 SCI表示法的相关文章

HihoCoder - 1543 SCI表示法

时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 每一个正整数 N 都能表示成若干个连续正整数的和,例如10可以表示成1+2+3+4,15可以表示成4+5+6,8可以表示成8本身.我们称这种表示方法为SCI(Sum of Consecutive Integers)表示法. 小Hi发现一个整数可能有很多种SCI表示,例如15可以表示成1+2+3+4+5,4+5+6,7+8以及15本身.小Hi想知道N的所有SCI表示中,最多能包含多少个连续正整数.例如1+2+3+4 +5

#1543 : SCI表示法

时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 每一个正整数 N 都能表示成若干个连续正整数的和,例如10可以表示成1+2+3+4,15可以表示成4+5+6,8可以表示成8本身.我们称这种表示方法为SCI(Sum of Consecutive Integers)表示法. 小Hi发现一个整数可能有很多种SCI表示,例如15可以表示成1+2+3+4+5,4+5+6,7+8以及15本身.小Hi想知道N的所有SCI表示中,最多能包含多少个连续正整数.例如1+2+3+4+5是

SCI论文从入门到精通

第一部分 经验谈 一.先想先写最后做 做研究之前,必须想清楚:结果能不能发表?发表在哪里? 先把文章大框写好,空出数据,等做完实验填完空就可以发了:正所谓心中有沟壑! 在未搞清“写什么.发哪里.自己研究与同类研究有何出色之处”之前,就不要动手做! 继续去看文献,去想:想不清楚就做还不如不做! 要想这样做,就得先看文献!要知道如何把文章架起来.要知道别人是如何讨论的.要知道自己的数据是不是说明了与别人不同的东东或别人没有做过……这个过程就是阅读文献及思考的过程,这些搞清楚了,写就简单了! 要是先做

SCI科技论文的写作技巧-核心价值

第一次写SCI论文的撰写技巧,本身不是大牛,也许没什么资格谈这个.在此仅是个人的一些思考,对不对,好不好,且当另论. 对于偏向应用的工科生来说,写SCI论文不是一件简单的事情.当然,也不是没可能.全在于如何提取.构思.组织你的论文.论文本身的学术价值当然少不了.但对一个问题,在有的人眼里,就是"这么简单,有什么可写的":而对于另外一些人,却能挖掘出背后的深度.广度.和细度,完成一篇较高价值的论文发表.至于学术价值方面,在次就不赘述.主要谈一下如何来构思SCI的论文,简单概括就是四个字:

SCI论文编辑教你如何准备SCI论文和写作 [转]

该文最精辟的论点: 选题要小,开掘要深:不要题目很大,内容却很单薄. 题目很大的人实际是什么也懂点但什么也不真懂.做学问不合适,特别是青年学生不合适. 题目很小但把问题谈深入的人,是属于真做学问的类型.积少成多,才有希望成为真有本事的学霸. 转自:http://www.sciencenet.cn/bbs/showpost.aspx?id=57128 一.研究生必备四本 俗话说好记性不如烂笔头,所以一定要首先养成做笔记的好习惯!作为研究生下面这几个本子是必不可少的 1,实验记录本(包括试验准备本)

扩展欧几里得算法的模板实现

我居然现在还记不住扩欧的板子,我太弱啦! 扩展欧几里得算法解决的是这样的问题: 给定一个不定方程组ax+by=gcd(a,b),求他的一组整数解 先给出实现代码 void exgcd(int a,int b,int &x,int &y) { if(!b) { x=1,y=0;//gcd(a,0)显然等于1*a-0*0=a return a; } int ans=exgcd(b,a%b,x,y); int tem=x; x=y; y-=tem-(a/b)*y; return ans;} 但实

【精品】北京赛车计划冠军定位玩法技巧

車車是一種投資,我們的目標是:細水長流,見好就收,不求日金千金,只求長期穩定!許多人賠本的原因:1. 資金不足,卻大把下注,跟到第4期不出,錢不夠了,心慌了.有人孤注一擲,衝到第5期中了,嚇的半死.有人不敢跟,第5期出號了,氣死, 然後再跟新計劃,沒錢了,郁悶死.這兩種做法都不對,既然是以投資的心態做事,就應該計劃好翻倍的本錢,做到99%的穩賺,狀況不對就要及時止損. 看著連續中,就是不敢跟,最後咬牙跟了,馬上挂了.于是開始哭,我運氣咋這麽差.不買就中,一買就挂.相反,有些人專門等挂,一挂就上,

构建之法——读书笔记(8)

<构建之法>第十&十一章 主要讲述了在软件设计前期的需求分析问题上的方法和实践经验,分为"典型用户和场景"以及"软件设计与实现". 其中第十章大部分内容包含: 用户的分类(典型用户可以包括以下内容: 1. 名字(越自然越好) 2. 年龄(不同年龄和收入的用户有不同的需求) 3. 收入 4. 代表的用户在市场上的比例和重要性(比例大不等同于重要性高,如付费的用户比例较少,但是影响大,所以更重要 5. 使用这个软件的典型场景 6. 使用本软件/服务的

转:梯度下降法(上升法)的几何解释

梯度下降法是机器学习和神经网络学科中我们最早接触的算法之一.但是对于初学者,我们对于这个算法是如何迭代运行的从而达到目的有些迷惑.在这里给出我对这个算法的几何理解,有不对的地方请批评指正! 梯度下降法定义 (维基百科)梯度下降法,基于这样的观察:如果实值函数  在点  处可微且有定义,那么函数 在  点沿着梯度相反的方向  下降最快. 因而,如果                         对于  为一个够小数值时成立,那么 . 考虑到这一点,我们可以从函数  的局部极小值的初始估计  出发