M Manasa愛數學 全排列函式 思維

2021-08-02 07:28:20 字數 1097 閱讀 9783

給你乙個整數n,是否有它的排列可以被8整除?

例如,如果數字n = 123,則是可能的排列。

其中312可以被8整數,所以應該輸出yes。

第一行輸入乙個整數t,表示有t組資料。

接下來t行,每行輸入乙個整數n。

1 <= t <= 45

0 <= n <= 10^110

對於每一組資料,如果其排列有一組可以被8整除,則輸出yes,否則輸出no

2 61

75yes

no第一組資料:16是61的一組排列且可以整數8,所以輸出yes。

第二組資料:75的兩個排列57和75都不能整除8,所以輸出no。

要注意1000/8=125 也就是說只用考慮後三位就可以的

當然這也不容易

先放乙個純暴力全排列做法

#include 

#include

#include

using

namespace

std;

int main()

if (sum%8==0)

}while (next_permutation(st,st+len));

if (flag) puts("yes");

else

puts("no");

}return

0;}

最大時間複雜度106

簡單暴力

#include 

#include

#include

#include

#include

#include

using namespace std;

int main()else

if (len == 2)}}

if (flag) break;

}}else }}

if (flag) break;

}if (flag) break;}}

if (flag) puts("yes");

else puts("no");

}return

0;}

全排列函式

一 next permutation 函式,作用是輸出所有比當前排列 排列大的排列 順序為由小到大排 include include includeusing namespace std int main string str cin str while next permutation str.b...

全排列函式

人類終於登上了火星的土地並且見到了神秘的火星人。人類和火星人都無法理解對方的語言,但是我們的科學家發明了一種用數字交流的方法。這種交流方法是這樣的,首先,火星人把乙個非常大的數字告訴人類科學家,科學家破解這個數字的含義後,再把乙個很小的數字加到這個大數上面,把結果告訴火星人,作為人類的回答。火星人用...

全排列函式

nest permutation函式 向下求 include include 標頭檔案 using namespace std intmain dowhile next permutation a,a 3 這是乙個求乙個排序的下乙個排列的函式 return0 執行結果 123 1322 1323 1...