zoukankan      html  css  js  c++  java
  • hihoOffer收割练习20题目2

    题目2 : 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是15包含正整数最多的表示。

    输入

    第一行一个整数 T,代表测试数据的组数。  

    以下 T 行每行一个正整数N。  

    对于30%的数据,1 ≤ N ≤ 1000  

    对于80%的数据,1 ≤ N ≤ 100000  

    对于100%的数据,1 ≤ T ≤ 10,1 ≤ N ≤ 1000000000

    输出

    对于每组数据输出N的SCI表示最多能包含多少个整数。

    样例输入
    2  
    15  
    8
    样例输出
    5
    1

    本题与之前做的51nod 的1138 sum一题类似,是一个单调栈的应用题,两题的代码稍微改一下即可

    代码如下:

    #include<cstdio>
    #include<cstdlib>
    #include<cstring>
    #include<string>
    #include<algorithm>
    #include<iostream>
    #include<queue>
    #include<map>
    #include<cmath>
    #include<set>
    #include<stack>
    #define ll long long
    using namespace std;
    
    int main()
    {
    
        int t;
        cin>>t;
        while(t--)
        {
    
        ll temp=0;
        ll maxlength=0,length=0;
       stack<ll>st;
        ll n;
        cin>>n;
        ll n1=n;
        //ll sum;
        ll count=0;
        ll i=1;
        while(n-1>1)
        {
            n-=i++;
            if(n%i==0)
            {
                if(n/i)
                {
                    st.push(n/i);
                    length=0;
                    temp=0;
                    for(ll k=n/i;k<=n1/2+1;k++)
                    {
                        length++;
                        temp+=k;
                        if(temp==n1)
                        {
                            maxlength=max(maxlength,length);
                            break;
                        }
                    }
                }
    
            }
        }
       // st.pop();
        if(st.empty())
            cout<<1<<endl;
        else
        {
            cout<<maxlength<<endl;
        }
        }
        return 0;
    }
    











































































  • 相关阅读:
    linux网络connect: network is unreachable的解决记录
    kali系统输入msfvenom -l为什么不能显示
    基于fluxion 6.9 钓鱼wifi
    【操作系统】Linux
    【JAVA基础】Mybatis 基本应用
    饮冰三年-人工智能-Vue-70 Promise
    饮冰三年-人工智能-Vue-69 路由
    饮冰三年-人工智能-Vue-68 CLI
    饮冰三年-人工智能-Vue-67 Webpack
    饮冰三年-人工智能-Vue-66 Vue组件化
  • 原文地址:https://www.cnblogs.com/bryce1010/p/9387449.html
Copyright © 2011-2022 走看看