Cod sursa(job #637352)

Utilizator SmarandaMaria Pandele Smaranda Data 20 noiembrie 2011 13:58:51
Problema Dirichlet Scor 0
Compilator cpp Status done
Runda .com 2011 Marime 0.66 kb
#include<cstdio>
#define MOD 9999991
#define MOD2 9999991-2
using namespace std;
int main() {
	long n,i;
	long long prod=1,st,prod2,m,p,a;
	
	freopen("dirichlet.in","r",stdin);
	freopen("dirichlet.out","w",stdout);
	
	scanf("%ld",&n);
	for (i=2;i<=n+1;i++) {
		prod=(long long)prod*i%MOD;
		if (i==n)
			prod2=prod;
	}
	st=(prod2*(long long)2)%MOD;
	
	m=MOD2;
	p=1;
	a=prod2;
	for (;m>0;m=(m>>1)) {
		if (m&1)
			p=(long long)p*a;
		a=(long long)a*a;
	}
	
	st+=(long long)p;
	
	m=MOD2;
	p=1;
	a=prod;
	for (;m>0;m=(m>>1)) {
		if (m&1)
			p=(long long)p*a;
		a=(long long)a*a;
	}
	
	st+=(long long) p;
	
	printf("%lld\n",st);
	return 0;
}