BestCoder Round #21 1002

来源:互联网 发布:php重载 编辑:程序博客网 时间:2024/06/05 00:27

2014/12/7


这题不会做。。

数据离散处理竟然不知道。。刷题也是刷给狗吃了。。

像二分->三分这种思路。。

最后自己写的时候。

离散处理:我是隔5个记录一次,但是是从第五个开始记录的。把 1 忘记记录了。。

后来改过来就对了。

#include<stdio.h>#include<string.h>#define mod 1000000007int s[2000005];int ss[2000005];int main(){s[0] = 1;ss[0] =1;     __int64 a = 1,t = 1;    int cnt = 1;    for(int i = 1;i <= 10000000; i++)    {    t=t*i%mod;    a=a*t%mod;    if(i%5 == 0)    {    s[cnt] = t;    ss[cnt++] = a;    }            }        int n;    while(~scanf("%d",&n))    {        __int64 sum ;        __int64 a,b;        sum = ss[n/5];        a = s[n/5];        for(int i =n/5 * 5 + 1;i <= n; i++)        {        a=a*i%mod;            sum = sum*a %mod;        }        printf("%I64d\n",sum);    }    return 0;    }



0 0
原创粉丝点击