序列和_筆試題

來源:互聯網
上載者:User
給出一個正整數N和長度L,找出一段長度大於等於L的連續非負整數,他們的和恰好為N。答案可能有多個,我我們需要找出長度最小的那個。
例如 N = 18 L = 2:
5 + 6 + 7 = 18 
3 + 4 + 5 + 6 = 18

都是滿足要求的,但是我們輸出更短的 5 6 7

輸入資料包括一行:兩個正整數N(1 ≤ N ≤ 1000000000),L(2 ≤ L ≤ 100)
輸出:從小到大輸出這段連續非負整數,以空格分隔,行末無空格。如果沒有這樣的序列或者找出的序列長度大於100,則輸出No
這是在別處看到有人的思路,感覺很清晰

#include<iostream>using namespace std;int main() {    int N, L;    cin>>N>>L;    for(int i = L; i <= 100; i++) {        if((2*N+i-i*i)%(2*i) == 0) {            int start = (2*N+i-i*i)/(2*i);            for(int j = 0; j < i-1; j++) {                cout<<start+j<<" ";            }            cout<<start+i-1;            return 0;        }    }    cout<<"No"<<endl;}



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.