給出乙個長度為n序列,求出它在n的全排列中是第幾個。
這道題要找規律,設ml
[i] ml[
i]
為第i i
位後面有幾個數比第
i' role="presentation" style="position: relative;">i
i位小,通過一系列操作(詳見某蒟佬)可以得到答案an
s=an
s+ml
[i]∗
(n−i
)!a ns
=ans
+ml[
i]∗(
n−i)
!,資料範圍是50,要用高精度。
#include
#include
#include
using
namespace
std;
int n,cnt,f;
int a[51],ml[51],fac[51][101],ans[101],ad[101];
char c[110];
bool number(char x)
void init()
for (int i=0;i}void calc_ml()
void calc_fac()
}void akk(int x,int y)
}void add()
}int main()
int i=1;
while (!ans[i]&&i<100) i++;
while (i<=100)
init();
if (n!=-1) printf(",");
}}
JZOJ 7 9C組第二題 騎士問題
給出乙個8 8的棋盤,上面有一些障礙物,我們知道騎士是走l形的,現在給出騎士的座標和終點座標,求出騎士能到達的最少步數,如果不能到達就輸出not reachable。就是乙個簡單的bfs模板題,注意細節就好了。include include using namespace std int ans,h...
JZOJ 7 7C組第三題 頁
給出奇數個數,每次把它中間的數取出來放到最左邊或最右邊,求出最少取多少次可以讓這些數是從小到大的。bfs hash判重。每次左邊右邊操作一次,判斷之前有沒有出現過了,沒有就入隊。include define maxn 300017 using namespace std int n,state 10...
JZOJ 7 15C組第三題 漢諾塔
簡單的漢諾塔問題,改了一下規則 不能把盤子從1號柱上直接移到3號柱上,也不能把盤子直接從3號柱上移到1號柱上。現在給出盤子的數量,判斷它第m個狀態時每個盤子都在哪個柱上 初始狀態算0 這題正解比較神奇。但是我們可以用另一種方法,根據打表,我們能發現,當n為3時,狀態從0到27分別為 1 1 1 2 ...