2 solutions

  • 1
    @ 2024-11-30 12:21:27

    这就是AC代码😄

    #include<bits/stdc++.h>
    #define ll long long
    using namespace std;
    ll n,a[3000005],t=1;
    int main(){
    	cin>>n;
    	for(int i=1;i<=n;i++){
    		cin>>a[i];
    	}
    	sort(a+1,a+n+1);
    	for(int i=1;i<=n;i++){
    		t*=(a[i]-(i-1));
    		t%=1000000007;
    	}
    	cout<<t;
    	return 0;
    }
    
    • 0
      @ 2024-12-2 21:16:01

      首先对a1,a2,,ana_1 ,a_2 ,…,a_n进行升序排序。 那么每个ii点对应的颜色可选方案有aiia_i-i种。 根据分类计数原理的乘法原理将所有aiia_i-i的积既是最终的答案。

      #include <bits/stdc++.h>
      using namespace std;
      long long n, s = 1, a[300005];
      int main() {
          cin >> n;
          for (int i = 0; i < n; i++) cin >> a[i];
          sort(a, a + n);
          for (int i = 0; i < n; i++) s = s * (a[i] - i) % 1000000007;
          cout << s;
          return 0;
      }
      
      • 1

      Information

      ID
      613
      Time
      1000ms
      Memory
      256MiB
      Difficulty
      7
      Tags
      (None)
      # Submissions
      56
      Accepted
      12
      Uploaded By