第一題(共四題 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 請編寫程式,根據輸入的任何乙個正整數,找出符合這種要求的所有連續正整數序列。輸入資料 乙個正整數,以命令列引數的形式提...