1樓:Richard Xu
既然 @靈劍 提到了「逼格」……
我初三的時候機緣巧合參加了NOIWC 09',當年的最後一題「優化設計」參見這裡:
所以題主的這個問題其實就可以寫成45個布林變數(x12,x13,...x110,x23,....,x910),然後用5個布林表示式來保證上述5個式子成立,再來10個布林表示式來保證每個數字不會被重複使用……然後就是這道題的乙個樣例輸入了嘛!
接下來就可以用這道題的標程來解決了!
然鵝我並不知道此題的標程是怎樣的……
(我會告訴你我用隨機生成的方式水了50分嗎?)
2樓:陳碩
Python:
import
itertools
for(a1,
a2,b1,
b2,c1,
c2,d1,
d2,e1,
e2)initertools
.permutations
(range(1
,11)):ifa1+
a2==
13andb1-
b2==
2andc1+
c2==
12andd1-
d2==
4ande1+
e2==6:
print(a1
,a2,b1
,b2,c1
,c2,d1
,d2,e1
,e2)執行結果:
$ time python3 perm.py3 10 9 7 4 8 6 2 1 5
3 10 9 7 4 8 6 2 5 1
3 10 9 7 8 4 6 2 1 5
3 10 9 7 8 4 6 2 5 1
4 9 8 6 2 10 7 3 1 5
4 9 8 6 2 10 7 3 5 1
4 9 8 6 10 2 7 3 1 5
4 9 8 6 10 2 7 3 5 1
6 7 10 8 3 9 5 1 2 4
6 7 10 8 3 9 5 1 4 2
6 7 10 8 9 3 5 1 2 4
6 7 10 8 9 3 5 1 4 2
7 6 10 8 3 9 5 1 2 4
7 6 10 8 3 9 5 1 4 2
7 6 10 8 9 3 5 1 2 4
7 6 10 8 9 3 5 1 4 2
9 4 8 6 2 10 7 3 1 5
9 4 8 6 2 10 7 3 5 1
9 4 8 6 10 2 7 3 1 5
9 4 8 6 10 2 7 3 5 1
10 3 9 7 4 8 6 2 1 5
10 3 9 7 4 8 6 2 5 1
10 3 9 7 8 4 6 2 1 5
10 3 9 7 8 4 6 2 5 1
real 0m0.679s
user 0m0.666s
sys 0m0.013s
3樓:Milo Yip
C++ 有 std::next_permutation,10 行搞定:
#include
#include
intmain();
dowhile
(std
::next_permutation(a
,a+10
));}
輸出:$ g++ -std=c++11 -O3 a.cpp && time ./a.out
3 10 9 7 4 8 6 2 1 5
3 10 9 7 4 8 6 2 5 1
3 10 9 7 8 4 6 2 1 5
3 10 9 7 8 4 6 2 5 1
4 9 8 6 2 10 7 3 1 5
4 9 8 6 2 10 7 3 5 1
4 9 8 6 10 2 7 3 1 5
4 9 8 6 10 2 7 3 5 1
6 7 10 8 3 9 5 1 2 4
6 7 10 8 3 9 5 1 4 2
6 7 10 8 9 3 5 1 2 4
6 7 10 8 9 3 5 1 4 2
7 6 10 8 3 9 5 1 2 4
7 6 10 8 3 9 5 1 4 2
7 6 10 8 9 3 5 1 2 4
7 6 10 8 9 3 5 1 4 2
9 4 8 6 2 10 7 3 1 5
9 4 8 6 2 10 7 3 5 1
9 4 8 6 10 2 7 3 1 5
9 4 8 6 10 2 7 3 5 1
10 3 9 7 4 8 6 2 1 5
10 3 9 7 4 8 6 2 5 1
10 3 9 7 8 4 6 2 1 5
10 3 9 7 8 4 6 2 5 1
real 0m0.014s
user 0m0.011s
sys 0m0.001s
4樓:
再怎麼暈頭,也扯不到『隨機數』身上呀
因為 a + b 和 b + a 一樣,為了免去大量的重複,所以只輸出a#include
#include
bool unique( unsigned buf, size_t n )
{ unsigned mark = 0;
while( nif( (mark & (1u<輸出3 + 10 = 13
9 - 7 = 2
4 + 8 = 12
6 - 2 = 4
1 + 5 = 6
4 + 9 = 13
8 - 6 = 2
2 + 10 = 12
7 - 3 = 4
1 + 5 = 6
6 + 7 = 13
10 - 8 = 2
3 + 9 = 12
5 - 1 = 4
2 + 4 = 6
C 如何生成不重複大隨機數?
悽臨雨 設計一種一一對映的函式f x 0 21億一一對映到0 21億 然後取前n個x,然後f 隨機種子 1 f 隨機種子 n 就是你要的前n個不相同的隨機數。至於如何產生這樣的函式?我們知道十進位制是A 10000 B 1000 E 1。對位的順序做交換 交換D和E,會變成00,10,20,30,9...
怎麼用c語言使用規則取樣法生成SPWM?
Longson 假設直流母線電壓為 選取相電壓基準值為 定義調制度為相電壓幅值與基準值的比值 三相調製波為 其中 為 a 相電壓相位,分別為基波角頻率,頻率,週期。定義載波頻率為 載波週期為 對稱規則取樣是以每個三角載波的對稱軸 波峰或波谷 所對應的時間作為取樣時刻。假設在三角波的波谷時刻對調製波進...
用c語言如何判斷乙個三位數是否是對稱數?
豆戰聖佛 首先對輸入進行判斷是否符合題意為三位整數 以此數除以100,商即為百位 以此數對10取餘,餘數即為個位 無需判斷十位,只需看百位與個位等同與否,得解。 貪墨 1 先看輸入的資料型別,是char還是int2 根據input的不同,有以下兩種 1 char型別 char num 4 num 0...