初学者思路比较复杂,为什么只有30分,sum算不出较大的数呢
查看原帖
初学者思路比较复杂,为什么只有30分,sum算不出较大的数呢
426815
202210711211jiyifan楼主2021/3/7 20:04
#include<iostream>
#include<algorithm>
typedef long long int ll;
using namespace std;
int n;
int Maxnumber[55];
int a[55];//可能性
ll sum;
int main()
{
        cin>>n;
    for(int i=1;i<=n;i++)
        cin>>Maxnumber[i];
        sort(Maxnumber+1,Maxnumber+n+1);
        a[1]=Maxnumber[1];
        sum=Maxnumber[1];

    for(int i=2;i<=n;i++)//选兔子
      {
          if(Maxnumber[i]==Maxnumber[i-1])
            {
                a[i]=a[i-1]-1;
                sum*=a[i];
	sum%=1000000007;
            }
            if(Maxnumber[i]>Maxnumber[i-1])
            {
                a[i]=Maxnumber[i]-Maxnumber[i-1]+a[i-1]-1;
                sum*=a[i];
	sum%=1000000007;
            }
      }
      for(int i=1;i<=n;i++)
        {
            if(a[i]==0||a[i]<0)
                cout<<0;
            return 0;
        }
    cout<<sum;
    return 0;
}
2021/3/7 20:04
加载中...