程式設計之美2014初賽第二場 題目1 神奇的數列

2021-06-21 15:09:42 字數 1223 閱讀 2574



時間限制:

2000ms

單點時限:

1000ms

記憶體限制:

256mb

大神同學是乙個熱愛數字的孩子,她無時無刻不在思考生活與數學的聯絡。有一天,她發現其實公曆的設計是有講究的。

每4年就會多閏一天,每一百年又會有一年不是閏年,而第四百年又是閏年。這樣,這四百年的週期裡每一年平均有365又400分之97天。

大神同學將上面的規律簡記為100-4+1=97。

大神同學想知道是不是每乙個自然數都能按照上面的形式表示出來,具體來說就是,大神同學希望將乙個自然數n寫成a1

- a2

+ a3

- a4

+ …的形式,其中

a1是a2的倍數,a2是a3的倍數,依此類推。另外,大神同學不想讓這個問題變得太無聊,她還增加了一些附加條件:

1. 其中ai

≠ aj

(i ≠ j),即相鄰的兩個數前乙個至少是後乙個的兩倍或以上。

2. 數列的長度至少為3,不能超過100(大神同學覺得數列太長一定可以找到答案)。

3. 構造出來的數列中的每乙個數不能太大,因此大神同學希望數列中的每乙個數都是小於263的正整數。

大神同學思考了一會兒,發現這個問題似乎沒有那麼簡單,現在她求助於你,希望你能幫她解決這個不太簡單的問題。

第一行包括乙個數t,表示資料的組數。

接下來包含t組資料,每組資料一行,包括乙個整數n。

對於每組資料,輸出一行「case x:

」,其中x表示每組資料的編號(從1開始),後接乙個字串「no solution」表示無解,或者輸出一列數,相鄰兩個數之間用空格隔開。如果有多組數列滿足要求,輸出任意一組。

小資料:

1 ≤ t ≤ 10

1 ≤ n ≤ 100

大資料:

1 ≤ t ≤ 1000

1 ≤ n ≤ 1018

樣例輸入

2 1 97

樣例輸出

case 1: no solution case 2: 100 4
自己直接暴力寫的,結果大資料果斷跪了,呼呼,貼下大神的**,膜拜一下!
#include #include #include using namespace std;

int main()

}return 0;

}

2014程式設計之美初賽第二場

時間限制 2000ms 單點時限 1000ms 記憶體限制 256mb 大神同學是乙個熱愛數字的孩子,她無時無刻不在思考生活與數學的聯絡。有一天,她發現其實公曆的設計是有講究的。每4年就會多閏一天,每一百年又會有一年不是閏年,而第四百年又是閏年。這樣,這四百年的週期裡每一年平均有365又400分之9...

2014程式設計之美初賽第二場

時間限制 2000ms 單點時限 1000ms 記憶體限制 256mb 大神同學是乙個熱愛數字的孩子。她無時無刻不在思考生活與數學的聯絡。有一天,她發現事實上公曆的設計是有講究的。每4年就會多閏一天,每一百年又會有一年不是閏年。而第四百年又是閏年。這樣。這四百年的週期裡每一年平均有365又400分之...

程式設計之美初賽第二場

problem a 一邊輸入邊一邊維護殘留網路,然後跑isap。小資料過了,大資料tle。據說可以bfs預處理 層次網路。可以過。view code include include include include using namespace std const int inf 10000000 ...