逆元在階乘上的運用

2021-08-16 20:08:38 字數 1055 閱讀 1020

what』s 逆元

原題:xiaoxin juju needs help

題意

給一字串,問用這個字串裡面的字元可以拼成多少個不同的回文串

解析

把回文串分成左右兩邊,即字母x出現次數除2,求排列c

假設左半邊有x個字母a,y個字母b,z個字母c,c==(x+y+z)! / x! / y! / z!

普通的做法有個bug,(x+y+z)!當然可以做,但是%mod後再除x!呢?舉個例子,10000/100可以除,但是10000%107再/100就會造成精度上的錯誤。

用了逆元就完全不用擔心了,我們先求出(x+y+z)!,再乘x!的逆元,y!的逆元,z!的逆元,就避免了這種錯誤。

**

#include

#include

#include

#define d long long

const d mod=(d)(1e9+7);

using

namespace

std;

d swift(d a,d b)return mul;

}d inv_fac[1007];

d fac[1007];

void init()

void process()

int nu[27];for(int i=1;i<=26;i++)nu[i]=0;

for(int i=0;i'a'+1]++;

int tji=0;

for(int i=1;i<=26;i++)if(nu[i]%2==1)tji++;

if(tji>1)

//因為取一半,所以奇數的那個不用管

d ans=fac[x.length()/2];

for(int i=1;i<=26;i++)

printf("%lld\n",ans);

}int main()

} /*

3*/

This在java中的運用

1 當有成員變數和區域性變數重名時。用this來表示成員變數。public class thisdemo public static void main string args 2 返回類自身的引用 public class thiszisheng private void print public...

中運用 膠水在木雕中的運用技巧

hi,歡迎收看本期 木雕裡的那些事 我是你的解密人,谷藏峰 做木雕時,有時難免會碰到,關鍵部件斷裂的情況,自己辛辛苦苦做了那麼久,就因為這些小缺陷,整個報廢,未免有些可惜。那麼該怎麼辦呢?這個時候,就要用到它了 502膠水 這是我們生活中,粘鞋時會用到的一種速乾膠水。在各種五金雜貨店都能買到。它能在...

CreateFile在串列埠中的運用

在32位的windows系統中,串列埠和其他通訊裝置是作為檔案處理的。對串列埠的操作和對檔案的操作是完全一樣的。通訊以呼叫createfile 開始。函式原型如下 handle createfile lpctstr lpfilename,指向檔名的指標 dword dwdesiredaccess,訪...