Thứ Sáu, 4 tháng 1, 2019

Codeforces Round 57- Bài 7

Bài 7: All bus tickets in Berland have their numbers. A number consists of $n$ digits ($n$ is even). Only $k$ decimal digits $d_1,d_2,...,d_k$ can be used to form ticket numbers. If $0$ is among these digits, then numbers may have leading zeroes. For eample, if $n=4$ and only digits $0$ and $4$ can be used, then $0000,4004,4440$ are valid ticket numbers, and $0002,00,44443$ are not.
a ticket is lucky if the sum of first $\frac{n}{2}$ digits is equal to the sum of remaining $\frac{n}{2}$ digits.
Calculate the number of different lucky tickets in Berland. Since the answer may be big, print it modulo $998244353$.
Input
The first line contains two integers $n$ and $k(2\le n\le 2.10^5,1\le k\le 10)$- the number of digits in each ticket number, and the number of ticket number, and the number of different decimal digits that may be used. $n$ is even.
The second line contains a sequence of pairwise distinct integers $d_1,d_2,...,d_k(0\le d_i\le 9)$- the digits that may be used in ticket numbers. The digits are given in arbitrary order.
Output
Print the number of lucky ticket numbers, taken modulo $998244353$.
Examples
input
Copy
4 2
1 8
output
Copy
6
input
Copy
20 1
6
output
Copy
1
input
Copy
10 5
6 1 4 0 3
output
Copy
569725
input
Copy
1000 7
5 4 0 1 8 3 2
output
Copy
460571165
 Solution:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int mod=998244353;
const int maxn = 1000111;
int n, k;
bool a[11];
ll b[maxn], inv[maxn];
int main()
{
 inv[1] = 1;
 for (int i=2; i<=maxn; i++) inv[i] = mod-(mod/i)*inv[mod%i]%mod;
 cin>>n>>k;
 n /= 2;
 int mn = 10;
 vector<int> v;
 for (int i=0; i<k; i++)
 {
  int x;
  cin>>x;
  v.push_back(x);
  mn = min(mn, x);
 }
 for (auto x:v) a[x-mn] = 1;
 b[0] = 1;
 ll ans = 0;
 for (int i=0; i<=n*10; i++)
 {
  ll sum = 0;
  for (int j=1; j<10&&j<=i; j++) sum -= b[i-j+1]*(i-j+1)%mod*a[j];
  for (int j=0; j<10&&j<=i; j++) sum += b[i-j]*a[j+1]*(j+1)%mod*n%mod;
  b[i+1] = sum%mod*inv[i+1]%mod;
  ans = (ans+b[i]*b[i])%mod;
 }
 cout<<(ans+mod)%mod<<endl;
 return 0;
}

Không có nhận xét nào:

Đăng nhận xét

Bài G - Educatioal Round 62

Đề bài: Bạn được cho 1 đồ thị vô hướng đặc biệt. Nó bao gồm $2n$ đỉnh được đánh số từ 1 đến 2n. Dưới đây là một số đặc tính của đồ thị: + ...