Codeforces Round #829 Div. 2 D. Factorial Divisibility(结论数学)

news/2024/11/23 22:14:57/

Codeforces Round #829 Div. 2 D. Factorial Divisibility(结论&数学)

注意 1 ≤ a i ≤ x 1\le a_i\le x 1aix

显然 a i = x a_i=x ai=x没有影响。

那么只需考虑 [ 1 , x − 1 ] [1,x-1] [1,x1]这一部分的和。

注意到: i ! × ( i + 1 ) = ( i + 1 ) ! i!\times (i+1)=(i+1)! i!×(i+1)=(i+1)!

我们开个数组统计每个 i i i的次数。

然后用上面的公式转化。这样保证每个 c n t i ≤ i cnt_i\le i cntii

考虑 ∑ i = 1 x − 1 c n t i × i ! \sum_{i=1}^{x-1}cnt_i\times i! i=1x1cnti×i!的最大值。

显然是 c n t i = i cnt_i=i cnti=i

那么 ∑ i = 1 x − 1 i × i ! = ∑ ( i + 1 − 1 ) × i ! = ( i + 1 ) ! − i ! \sum_{i=1}^{x-1}i\times i!=\sum (i+1-1)\times i!=(i+1)!-i! i=1x1i×i!=(i+11)×i!=(i+1)!i! 可以错位相减。

然后 ∑ i = 1 x − 1 i × i ! = max ⁡ { ∑ c n t i × i ! } = x ! − 1 < x ! \sum_{i=1}^{x-1}i\times i!=\max\{\sum cnt_i\times i!\}=x!-1<x! i=1x1i×i!=max{cnti×i!}=x!1<x!

那么如果要整除 x ! x! x!,显然这个部分要是 x ! x! x!的倍数,然后最大值都小于 x ! x! x!,所以只能等于0.

然后 O ( n ) O(n) O(n)扫一遍即可。

// Problem: D. Factorial Divisibility
// Contest: Codeforces - Codeforces Round #829 (Div. 2)
// URL: https://codeforces.com/contest/1754/problem/D
// Memory Limit: 256 MB
// Time Limit: 2000 ms
// Date: 2022-11-11 16:22:51
// --------by Herio--------#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull; 
const int N=1e3+5,M=2e4+5,inf=0x3f3f3f3f,mod=1e9+7;
const int hashmod[4] = {402653189,805306457,1610612741,998244353};
#define mst(a,b) memset(a,b,sizeof a)
#define db double
#define PII pair<int,int>
#define PLL pair<ll,ll>
#define x first
#define y second
#define pb emplace_back
#define SZ(a) (int)a.size()
#define all(a) a.begin(),a.end()
#define VI vector<int>
#define rep(i,a,b) for(int i=a;i<=b;++i)
#define per(i,a,b) for(int i=a;i>=b;--i)
#define IOS ios::sync_with_stdio(false),cin.tie(nullptr) 
void Print(int *a,int n){for(int i=1;i<n;i++)printf("%d ",a[i]);printf("%d\n",a[n]); 
}
template <typename T>		//x=max(x,y)  x=min(x,y)
void cmx(T &x,T y){if(x<y) x=y;
}
template <typename T>
void cmn(T &x,T y){if(x>y) x=y;
}
int main(){int n,x;IOS;cin>>n>>x;vector<int>a(x+1);for(int i=1;i<=n;i++){int y;cin>>y;a[y]++;}int ok  =1;for(int i=1;i<x;i++){while(a[i]>i){a[i]-=i+1;a[i+1]++;}if(a[i]){ok = 0;break;}}if(ok)cout<<"Yes";else cout<<"No";return 0;
}

http://www.ppmy.cn/news/541272.html

相关文章

Codeforces Round #829 (Div. 2) C1. Make Nonzero Sum (easy version)

翻译&#xff1a; 这是这个问题的简单版本。不同之处在于&#xff0c;在这个版本中&#xff0c;数组不能包含零。只有两个版本的问题都解决了&#xff0c;你才能进行hack。 给定一个数组[&#x1d44e;1&#xff0c;&#x1d44e;2&#xff0c;…&#x1d44e;&#x1d45b;]…

Codeforces Round #829——无EF,以后有时间再发这个

目录 A&#xff1a;Technical Support B&#xff1a;Kevin and Permutation C1 &#xff1a;Make Nonzero Sum (easy version) C2&#xff1a;Make Nonzero Sum (hard version) D&#xff1a;Factorial Divisibility E&#xff1a;Wish I Knew How to Sort A&#xff1a;…

CodeForces Round #829 (div.2) A~C2

A. Technical Support 题意&#xff1a; 给定一个只包含 Q, A 的字符串&#xff0c;问每个 Q(问题) 能否匹配所有 A(回答)。 思路&#xff1a; 一个 Q 可以对应多个 A&#xff0c;可以允许 A 没有对应的 Q&#xff0c;即允许在 A 之前没有 Q. 代码如下&#xff1a; #incl…

Codeforces Round #829 (Div. 1) D.The Beach(最短路/流量为1的费用流)

题目 n*m(n*m<3e5)的网格图&#xff0c;由空地、石头和1*2的床组成&#xff0c; Andrew想在网格图上找一个1*2的空地用来放床&#xff0c;他可以把别人的床进行如下挪动&#xff1a; ①花费p(1<p<1e9)的代价&#xff0c;以床的一个端点为轴不动&#xff0c; 将另一…

Codeforces Round #829 (Div. 2) D. Factorial Divisibility

Codeforces Round #829 (Div. 2) D. Factorial Divisibility Let’s create an array [ c n t 1 , c n t 2 , … , c n t x ] [cnt_1,cnt_2,…,cnt_x] [cnt1​,cnt2​,…,cntx​] where c n t i cnt_i cnti​ equals to number of elements equals to i in the initial arra…

Codeforces Round #829 (Div. 2) A-E

废话&#xff1a;本来前50分钟kill完了A B C1 D的时候是前300&#xff0c;看着C2过的人很少就想着摆了&#xff0c;结果刷了会儿视频一看我都排到700了&#xff0c;这才开始做C2&#xff0c;结果到最后C2卡线过的&#xff0c;E应该能过也没时间想了。直接排名干到700了。 Code…

Codeforces Round #829 (Div. 2)部分题解A B C1 E

原题地址&#xff1a;Dashboard - Codeforces Round #829 (Div. 2) - Codeforces A. Technical Support 题意&#xff1a; 有一个只包含“Q”和"A"的字符串&#xff0c;Q代表问题&#xff0c;A代表回答&#xff0c;有问必有答&#xff0c;也就是Q后面一…

Codeforces Round #829 (Div. 2)——(ABC1)题解

一、解题思路 1.A. Technical Support——1754A 题目分析&#xff1a;题目给定了一串字符串&#xff0c;字符串包含了两种字符一个为‘Q’表示问题&#xff0c;另一个字符A表示回答问题&#xff0c;题目要求输出是否对于每个问题&#xff0c;都做出了解答&#xff0c;若是输出…