题意:已知两个长度为n的序列,该序列由数字组成,若该位为0,则表示该位上的数被擦去了,然后给你一个已知大小为m的集合,表示序列的每一位可能的范围,然后问你将两个序列所有的0填满数字使得第一个序列的字典序大于第二个序列的字典序的可能性是多少?
题解:我们直接遍历即可,对于当前分四种情况讨论,具体见代码(水题一道)
#include
#include
#include
#include
using namespace std;
#define ll long long
#define mod 1000000007
ll n,m,a[100005],b[100005],ans,tmp=1;
ll q(ll x,ll y)
{
ll res=1;
while(y)
{
if(y%2)
res=res*x%mod;
x=x*x%mod;
y/=2;
}
return res;
}
int main(void)
{
scanf("%lld%lld",&n,&m);
for(int i=1;i<=n;i++)
scanf("%lld",&a[i]);
for(int i=1;i<=n;i++)
scanf("%lld",&b[i]);
for(int i=1;i<=n;i++)
{
if(a[i]!=0 && b[i]!=0)
{
if(a[i]