2023年百度之星程式設計大賽試題初賽題目 題1

2021-06-06 12:07:31 字數 1619 閱讀 8099

第一題(共四題 100 

分):連續正整數( 

10 分) 

題目描述:乙個正整數有可能可以被表示為 n(n>=2) 

個連續正整數之和,如: 

15=1+2+3+4+5 

15=4+5+6 

15=7+8 

請編寫程式,根據輸入的任何乙個正整數,找出符合這種要求的所有連續正整數序列。 

輸入資料:乙個正整數,以命令列引數的形式提供給程式。 

輸出資料:在標準輸出上列印出符合題目描述的全部正整數序列,每行乙個序列,每個序列都從該序列的最小正整數開始、以從小到大的順序列印。如果結果有多個序列,按各序列的最小正整數的大小從小到大列印各序列。此外,序列不允許重複,序列內的整數用乙個空格分隔。如果沒有符合要求的序列,輸出 「none」 。 

例如,對於 15 

,其輸出結果是: 

1 2 3 4 5 

4 5 6 

7 8 

對於 16 

,其輸出結果是: 

none 

評分標準:程式輸出結果是否正確。

my answer:

思路:1 <= start < end <= n/2+1,start從1開始遍歷,end用二分搜尋

優化:start不需要乙個乙個遍歷

#include using namespace std;

int main()

start++;

} if(!flag)cout<<"none"《牛a陳世熹的比賽答題原始碼:

結果可以分為兩類,以15為例:

一種是像12345和456這樣的,每個序列的個數是奇數個,另這個序列的中間的數為mid,那麼n%mid==0&&(n/mid)%2==1

另一種是像78這樣的序列,每個序列的個數是偶數個,另這個序列中第乙個數+倒數第乙個數==第二個數+倒數第二個數==sum,那麼sum%2==1&&n%sum==0

#include #include #include #include #include using namespace std;

int n, m;

pairlist[65536];

int main(int argc, char* args)

} else

} if (m == 0)

printf("none\n");

else

} return 0;

}

牛b樓天城的比賽答題原始碼,我表示完全沒看懂

#include #include #include #include using namespace std;

#define _maxl 2000000

void getn(char *s,long long &n)

void print_bigint(long long n)

void solve(long long n)

printf("\n");

} } if (!find_answer)

printf("none\n");

} int main(int argc,char *arg)

2023年百度之星程式設計大賽試題初賽題目 題3

第三題 共四題 100 分 字串替換 30 分 題目描述 請編寫程式,根據指定的對應關係,把乙個文字中的字串替換成另外的字串。輸入資料 程式讀入已被命名為 text.txt 和 dict.txt 的兩個輸入資料文字檔案,text.txt 為乙個包含大量字串 含中文 的文字,以 whitespace ...

2005「百度之星」程式設計大賽網上決賽試題

第一題 共兩題100分 站點統計 50分 題目描述 s 1 2 3 4 1 4 0 3 2 3 4 5 3 2 2 2 4 6 1 4 其中與s site 同行和同列的數字都表示站點號,其他每個數字表示乙個站點到另乙個站點的超文字鏈結數。如果站點a有到另乙個站點b的直接鏈結或間接 指通過乙個或多個直...

2023年百度之星程式設計大賽試題初賽第一題

第一題 共四題 100 分 連續正整數 10 分 題目描述 乙個正整數有可能可以被表示為 n n 2 個連續正整數之和,如 15 1 2 3 4 5 15 4 5 6 15 7 8 請編寫程式,根據輸入的任何乙個正整數,找出符合這種要求的所有連續正整數序列。輸入資料 乙個正整數,以命令列引數的形式提...