排序/数学公式

和为S的连续正数序列

http://www.nowcoder.com/questionTerminal/c451a3fd84b64cb19485dad758a55ebe

这是一个小学数学题。做法是枚举。
一个序列就是一个d=1的等差数列。假设数列元素个数为i,当i为偶数,只需要sum%i==i/2;
当i为奇数,只需要sum%i==0。
至于为什么,大家可以想想看,以中间的元素为轴,轴两边元素互相对称,和为2倍的中间元素。那么我们就把轴两边的元素相互匀一点,那么这个数列就变成了d=0的数列。
当数列元素为偶数,中间元素是2个,且差值为1,我们两两匀,最后不就是i/2吗。

但凡数列个数符合上述两个条件之一的,就可以满足题意,把这组解加入优先队列。(本人忘了怎么写二维可变数组的排序,故繁琐了一点,用了优先队列)

但是要怎么把这组数列算出来呢,很显然,我们已经知道了数列元素个数是i。而且我们有等差数列求和公式,所以自己推一下,首项a1=(2sum+i-ii)/2/i;
这题应该是cf Div2 A题水平。注意不要粗心推错公式,另外要判断a1是不是大于0

class Solution {
public:
    vector<vector<int> > FindContinuousSequence(int sum)
    {
        vector<vector<int> >vt;
        priority_queue<vector<int> >q;
        vector<vector<int> >ans;

        for(int i=2; i<sum; i++)
        {
            if( (i%2&&sum%i==0) ||(i%2==0&&sum%i==i/2) )
            {
                int a1=(2*sum+i-i*i)/2/i;
                if(a1>=1){
                    vector<int>vv;
                    for(int j=0; j<i; j++)
                    {
                        vv.push_back(a1++);
                    }
                    q.push(vv);
    //                vt.push_back(vv);
                }
            }
        }
        while(q.size()){
            vt.push_back(q.top());
            q.pop();
        }
        int n=vt.size();
        for(int i=n-1;i>=0;i--){
            ans.push_back(vt[i]);
        }

        return ans;
    }
};
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
正在热议
更多
# 一张图晒出你司的标语 #
4453次浏览 78人参与
# 找AI工作可以去哪些公司? #
10086次浏览 314人参与
# 米连集团26产品管培生项目 #
13482次浏览 285人参与
# 你的实习产出是真实的还是包装的? #
20825次浏览 346人参与
# 从事AI岗需要掌握哪些技术栈? #
9809次浏览 390人参与
# 春招至今,你的战绩如何? #
67871次浏览 599人参与
# 开放七大实习专项,百度暑期实习值得冲吗 #
15711次浏览 229人参与
# AI面会问哪些问题? #
29127次浏览 632人参与
# 你做过最难的笔试是哪家公司 #
35940次浏览 313人参与
# 中国电信笔试 #
32394次浏览 302人参与
# 金三银四,你的春招进行到哪个阶段了? #
22565次浏览 284人参与
# 投递几十家公司,到现在0offer,大家都一样吗 #
341221次浏览 2176人参与
# 同bg的你秋招战况如何? #
212267次浏览 1121人参与
# 哪些公司真双非友好? #
69823次浏览 289人参与
# 如何准备秋招 #
78324次浏览 868人参与
# 阿里笔试 #
179436次浏览 1324人参与
# 应届生被毁约被毁意向了怎么办 #
63354次浏览 305人参与
# 机械人避雷的岗位/公司 #
62727次浏览 393人参与
# 小马智行求职进展汇总 #
25151次浏览 80人参与
# 第一份工作一定要去大厂吗 #
15213次浏览 124人参与
# 担心入职之后被发现很菜怎么办 #
291432次浏览 1210人参与
# 为了减少AI幻觉,你注入过哪些设定? #
26324次浏览 310人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务