Ozon Tech Challenge 2020 (Div.1 + Div.2, Rated, T-shirts + prizes!).Kuroni and Impossible Calculation

http://codeforces.com/contest/1305题目链接

昨晚想了一个半小时愣是没想出来,惭愧;

发个博客记录一下;

一看题数据有点大,想到暴力肯定不行,于是开始想dp;

后面发现也不行就开始推数学式子。最后十分钟推出来可以用范德蒙行列式求解,但是没打上去。

今天看了正解发现果然还是得暴力,不过要加一个限制条件

当 n>mod 的时候,结果一定是0 这时数据量就缩小到三位数了。

为什么呢,因为鸽巢原理, n>mod的时候 必定存在 a%mod=b%mod =》|a-b|%mod=0;

上代码:

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 long long ans=1;
 4 long long a[200005];
 5 int main()
 6 {
 7     int n,m;
 8     cin>>n>>m;
 9     for(int i=0;i<n;i++)
10     {
11         cin>>a[i];
12     }
13     if(n>m)
14     {
15         cout<<0<<endl;return 0;
16     }
17     else
18     {
19         for(int i=0;i<n;i++)
20         {
21             for(int j=i+1;j<n;j++)
22             {
23                 ans=(ans*abs(a[i]-a[j]))%m;
24             }
25         }
26     }
27     cout<<ans%m<<endl;
28  } 

猜你喜欢

转载自www.cnblogs.com/LH2000/p/12408696.html