題目描述
請你幫忙給從 1 到 n 的數設計排列方案,使得所有的「質數」都應該被放在「質數索引」(索引從 1 開始)上;你需要返回可能的方案總數。
讓我們一起來回顧一下「質數」:質數一定是大於 1 的,並且不能用兩個小於它的正整數的乘積來表示。
由於答案可能會很大,所以請你返回答案 模 mod 10^9 + 7 之後的結果即可。示例
示例 1:
輸入:n = 5
輸出:12
解釋:舉個例子,[1,2,5,4,3] 是乙個有效的排列,但 [5,2,3,4,1] 不是,因為在第二種情況裡質數 5 被錯誤地放在索引為 1 的位置上。
示例 2:
輸入:n = 100
輸出:682289015
1 <= n <= 100
解題思路第一層:要計算質數的個數**第二層:要用排列組合算出結果
第三層:要在計算階乘時注意不能溢位
#define n 1000000007
bool isprime
(int num)
}return true;
}long
modfunc
(int n)
intnumprimearrangements
(int n)
ret=
modfunc
(cnt)
*modfunc
(n-cnt)
%n;//return cnt;
return ret;
}
鏈結 1175 質數排列
題目描述 請你幫忙給從 1 到 n 的數設計排列方案,使得所有的 質數 都應該被放在 質數索引 索引從 1 開始 上 你需要返回可能的方案總數。讓我們一起來回顧一下 質數 質數一定是大於 1 的,並且不能用兩個小於它的正整數的乘積來表示。由於答案可能會很大,所以請你返回答案 模 mod 10 9 7...
LeetCode 1175 質數排列
請你幫忙給從 1 到 n 的數設計排列方案,使得所有的 質數 都應該被放在 質數索引 索引從 1 開始 上 你需要返回可能的方案總數。讓我們一起來回顧一下 質數 質數一定是大於 1 的,並且不能用兩個小於它的正整數的乘積來表示。由於答案可能會很大,所以請你返回答案 模 mod 10 9 7 之後的結...
力扣46 全排列
給定乙個 沒有重複 數字的序列,返回其所有可能的全排列。這道題其實就是看你如何遍歷這棵搜尋樹。輸入1,2,3情況下的求解樹,如下 如果用dfs來做 第一種思路,交換 可能比較難想到 說白了每次挑乙個數字出來,為了保證不重複,我就換就行了嘛。void perm int list,int k,int m...