제출 #20015

#제출 시각아이디문제언어결과실행 시간메모리
20015tonyjjw목공 (kriii4_A)C++14
4 / 100
13 ms1784 KiB
//*
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <time.h>
#include <stdlib.h>
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <string>
#include <numeric>
#include <functional>
#define MOD 1092616193
#define MAX 0x3f3f3f3f
#define MAX2 0x3f3f3f3f3f3f3f3fll
#define ERR 1e-10
#define mp make_pair
#define all(x) (x).begin(), (x).end()
#pragma warning(disable:4996)
using namespace std;

typedef long long ll;
typedef long double ldb;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef pair<double, double> pdd;

ll mul_inv(ll a, ll b=MOD)
{
	ll b0=b, t, q;
	ll x0=0, x1=1;
	if(b == 1) return 1;
	while(a > 1)
	{
		q=a/b;
		t=b, b=a%b, a=t;
		t=x0, x0=x1-q*x0, x1=t;
	}
	if(x1 < 0) x1+=b0;
	return x1;
}


int n, m;
ll p[2000];
ll d[6000];

int main()
{
	int i, j, k;
	cin>>n>>m;
	ll sum=0;
	for(i=0;i<n;i++)
	{
		scanf("%lld", &p[i]);
		sum+=p[i];
	}
	for(i=0;i<n;i++) p[i]*=mul_inv(sum), p[i]%=MOD;
	for(i=n;i<=m;i++)
	{
		ll sum=0;
		for(j=0;j<=n-1;j++)
		{
			sum+=d[i-(n-j)]*p[j]%MOD;
		}
		sum++;
		sum%=MOD;
		d[i]=sum;
	}
	cout<<d[m];
	return 0;
}
//*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...