description
有兩個長度為n且僅由小寫字母組成的字串s,t,滿足s和t恰好有k位不同。問在所有恰好與s有k位不同的字串中,t按照字典序排在第幾位。由於答案可能很大,模10^9+7輸出。
input
第一行兩個整數n,k。
第二行乙個字串s。
第三行乙個字串t。
output
一行乙個整數表示答案。
sample input
4 1
abcd
bbcd
sample output
76 hint
對於前30%的資料,n<=5.
對於100%的資料,k<=n<=100000.
做法:
我們就從第一位開始統計:
首先字串的第一位肯定不能大於t的第一位
那麼如果s的第一位比t的第一位要小,那麼第一位對答案的貢獻就是
c(n-1,m-1)25^(m-1)(t[1]-『a』-1)+c(n-1,m)*25^m然後要m–
如果s的第一位比t的第一位要大,那麼第一位對答案的貢獻就是c(n-1,m-1)25^(m-1)(t[1]-『a』)然後要m–
如果s的第一位等於t的第一位,那麼對答案的貢獻就是c(n-1,m-1)25^(m-1)(t[1]-『a』)
然後往下一位一樣的接著處理就好了。
**如下:
#include
#include
#include
#define maxn 1000000007
using
namespace
std;
char a[100007],b[100007];
long
long f[100007],g[100007],l[100007];
long
long n,m;
long
long ans;
long
long pow4(long
long a,long
long b)
return r;
}long
long c(long
long x,long
long y)
int main()
for (long
long i=1;i<=n;i++)
if (a[i]==b[i])
if (a[i]>b[i])
}cout
<1;
}
2023年8月8日提高組T1 作業
小a作為乙個乖乖好學生,回到家後總是一絲不苟地完成老師布置的作業。這天,老師給小a布置了n項作業,每一項作業都有截止時間di和價值vi 你可以理解成每做完乙份作業就要快遞過去給老師,且快遞是不耗費時間的 每完成一項作業便可獲得其價值。但小a發現,自己每乙個單位時間內只能完成其中的一項作業,請你告訴小...
2023年8月8日提高組T1 作業
description 小a作為乙個乖乖好學生,回到家後總是一絲不苟地完成老師布置的作業。這天,老師給小a布置了n項作業,每一項作業都有截止時間di和價值vi 你可以理解成每做完乙份作業就要快遞過去給老師,且快遞是不耗費時間的 每完成一項作業便可獲得其價值。但小a發現,自己每乙個單位時間內只能完成其...
2023年8月10日提高組T1 數學
description 小a得到了乙個數列a,他告訴你這個數列中所有的a i 都是1到n的自然數,並且告訴你對於一些a i 不能取哪些值。無聊的你想要知道所有可能的數列的積的和。定義乙個數列的積為這個數列所有數的乘機。由於答案太大,只要模10 9 7輸出即可。input 第一行三個整數n,m,k,分...