码迷,mamicode.com
首页 > 其他好文 > 详细

HDOJ 5139 Formula 离线

时间:2014-12-10 16:23:08      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   http   io   ar   color   os   sp   

找规律
f(1)=1
f(2)=1*1*2=(1)*(1*2)=1!*2!
f(3)=1*1*1*2*2*3=(1)*(1*2)*(1*2*3)=1!*2!*3!

式子可以简化为 f(n)=i=1n(n!)%MOD,直接打表不行,会超内存,可以对数据进行离线处理。排好序之后从小到大暴力。ClogC+10000000 ,C为case数目。



Formula

Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 714    Accepted Submission(s): 255


Problem Description
f(n)=(i=1nin?i+1)%1000000007
You are expected to write a program to calculate f(n) when a certain n is given.
 

Input
Multi test cases (about 100000), every case contains an integer n in a single line. 
Please process to the end of file.

[Technical Specification]
1n10000000
 

Output
For each n,output f(n) in a single line.
 

Sample Input
2 100
 

Sample Output
2 148277692
 

Source
 




#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>

using namespace std;

typedef long long int LL;
const LL maxn=10001000;
const LL mod=1000000007;

int a,id;

struct QUE
{
	int x,id;
	LL ans;
}que[maxn];

bool cmp1(QUE a,QUE b)
{
	return a.x<b.x;
}

bool cmp2(QUE a,QUE b)
{
	return a.id<b.id;
}

LL now,nowans;
LL nowjiecheng;

LL jiec(LL x)
{
	for(int i=now+1;i<=x;i++)
	{
		nowjiecheng=(nowjiecheng*i)%mod;
	}
	now=x;
	return nowjiecheng;
}

int main()
{
	while(scanf("%d",&a)!=EOF)
	{
		que[id].x=a; que[id].id=id;
		id++;
	}
	sort(que,que+id,cmp1);
	now=1,nowans=1,nowjiecheng=1;
	for(int i=0;i<id;i++)
	{
		if(que[i].x==now)
		{
			que[i].ans=nowans; 
		}
		else if(que[i].x>now)
		{
			LL temp=1;
			for(int j=now+1;j<=que[i].x;j++)
			{
				temp=(temp*jiec(j))%mod;
			}
			nowans=(nowans*temp)%mod;
			que[i].ans=nowans;
		}
	}
	sort(que,que+id,cmp2);
	for(int i=0;i<id;i++)
	{
		cout<<que[i].ans<<endl;
	}
	return 0;
}



HDOJ 5139 Formula 离线

标签:des   style   blog   http   io   ar   color   os   sp   

原文地址:http://blog.csdn.net/ck_boss/article/details/41846711

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!