湘潭大學oj1194

2021-07-01 21:26:48 字數 882 閱讀 9647

題目描述

快遞小哥每天都辛苦的送快遞,今天他需要送n份快遞給n個收件人,第i份快遞需要送給第i個收件人。 請問其中發生恰好k個送錯了的情況數是多少?

輸入存在多樣例。 每行輸入兩個整數n和k,1≤n≤1000,0≤k≤n。 如果兩個都為0,則表示輸入結束,這個樣例不需要處理。

輸出每行輸出乙個樣例的結果,因為數值會比較大,所有結果需要對109+7取模。

樣例輸入

1 1

2 13 2

1000 1000

0 0

樣例輸出
003

37043040

這個題目其實就是三個點要注意:
1.錯排遞推公式:d[i] = (i-1)*(d[i-1] + d[i-2]) (i > 2) d[1] = 0, d[2] = 1;(公式詳解找維基百科:錯排)
2.排列組合公式(楊輝三角):c[i][j] = c[i-1][j] + c[i-1][j-1] (0 < i < 1000, j < i)
c[i][0] = c[i][i] = 1 (i < 1001)
3.就是就是當k為0的時候結果為1(我就是卡在這,開始怎麼都沒有想到0個沒錯其實就是全部送對,而全部送對就只有1種情況嘛!)

[cpp]view plain

copy

#include

using

namespace std;  

const

int n = 1001;  

const

int mod = 1000000007;  

#define ll long long

ll d[n], c[n][n];  

int main()  

湘潭大學程式設計實踐 1194

題目描述 快遞小哥每天都辛苦的送快遞,今天他需要送n份快遞給n個收件人,第i份快遞需要送給第i個收件人。請問其中發生恰好k個送錯了的情況數是多少?輸入存在多樣例。每行輸入兩個整數n和k,1 n 1000,0 k n。如果兩個都為0,則表示輸入結束,這個樣例不需要處理。輸出每行輸出乙個樣例的結果,因為...

湘潭大學OJ1202逆序數(歸律)

題目描述 有n張卡片,分別標有數字1 n。有一天silence把他們按某種序列排好,然後從第一張開始取出一張,再拿一張放到最後面,再取出一張,再拿出一張放到最後面.知道n張卡片全部取走。把取出的卡片按取出的順序排好,正好是1,2,3,4,n。現在,告訴你n,silence希望你幫他計算原來的序列的逆...

Digit(湘潭大學比賽)

中文問題目就不解釋了。思路,找到這個數對應的的數字是多少,然後對這個數取對應的位置。步驟 先打表打出一位數字對應字串的長度,兩位數的,到8,9就差不多了。先確定給定的n是哪個位數的數字,這樣可以確定n指的是這個數字的第幾位。over include include include includeus...