luogu P1866 编号

题目描述

太郎有N只兔子,现在为了方便识别它们,太郎要给他们编号。兔子们向太郎表达了它们对号码的喜好,每个兔子i想要一个整数,介于1和Maxnumber[i]之间(包括1和Maxnumber[i])。当然,每个兔子的编号是不同的。现在太郎想知道一共有多少种编号的方法。

你只用输出答案mod 1000000007即可。如果这是不可能的,就输出0.

输入输出格式

输入格式:

 

第一行是一个整数N。(1≤N≤50)

第二行N个整数Maxnumber[i]。(1≤Maxnumber[i]≤1000)

 

输出格式:

 

一个整数

 

输入输出样例

输入样例#1: 复制
2
5 8
输出样例#1: 复制
35

纯数学题,就好似计算概率

明白了这里就没啥难度了。
#include <iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
long long n,a[100],ans,k;
int main()
{
    ans=1;                //初始化 
    scanf("%d",&n);
    for(int i=1;i<=n;i++)scanf("%d",&a[i]);
    sort(a+1,a+1+n);        //从前往后推,想不出第二种解决办法了 
    for(int i=1;i<=n;i++)
    {
        ans*=(a[i]-k);
        if(a[i]-k<=0)        //某一编号矛盾直接出处“0”; 
        {
            printf("0");
            return 0;
        }
        ans%=1000000007;
        k++;
    }
    if(ans)printf("%d",ans);
    else printf("0");
}

 

此为个人略解,转载请标明出处:http://www.cnblogs.com/rmy020718/p/8831930.html

  本人永久联系QQ:2240560936

  那年你相顾伴她浪迹天涯,可曾记得我梧桐深锁囚笼为花,一语落罢,却是她已无他。

 
posted @ 2018-04-14 15:03  Manjusaka丶梦寒  阅读(178)  评论(0编辑  收藏  举报