FZU 2037Maximum Value Problem (打表预处理/找规律)

来源:互联网 发布:淘宝重复开店2017处罚 编辑:程序博客网 时间:2024/06/05 06:26

题目:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=110985#problem/D

打表代码:

#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;int main(){    int p[10];    for(int i=0;i<=9;i++)    {        p[i]=i;    }    int n=6;    int s=0;    do    {        int ans=0;        int maxn=0;        for(int i=1;i<=5;i++)        {            printf("%d ",p[i]);        }        printf("\n");        for(int i=1;i<=n;i++)        {            if(maxn<p[i])            {                maxn=p[i];                ans++;            }        }        printf("%d\n",ans);        s=s+ans;    }while(next_permutation(p+1,p+1+n));    printf("%d\n",s);}

用到了next_permutation(p+1,p+1+n)。

AC代码:

#include<stdio.h>#include<string.h>using namespace std;#define LL __int64#define MOD 1000000007LL f[1000005];double ff[1000005];int init(){    f[1]=1;    ff[1]=1;    LL temp=1;    for(int i=2;i<=1000005;i++)    {        f[i]=(f[i-1]*i+temp)%MOD;        temp=(temp*i)%MOD;        ff[i]=ff[i-1]+1.0/(i*1.0);    }}int main(){    init();    int t;    scanf("%d",&t);    for(int i=1;i<=t;i++)    {        int n;        scanf("%d",&n);        printf("Case %d: %I64d %.6lf\n",i,f[n],ff[n]);    }}

证明其他博客都有,就不抄了。

0 0
原创粉丝点击