Cod sursa(job #631030)

Utilizator Robert29FMI Tilica Robert Robert29 Data 6 noiembrie 2011 20:34:06
Problema Mins Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include<stdio.h>
FILE*f=fopen("mins.in","r");
FILE*g=fopen("mins.out","w");
int min(int a,int b){
	if(a<b)
		return a;
	return b;
}
char w[1000001];
int p[1000001],v[100000],k;
long long s,c,d;
int main() {
	fscanf(f,"%lld%lld",&c,&d);
	c--;
	d--;
	int mins=min(c,d);
	for(int i=2;i<=mins;++i)
		if(w[i]==0){
			v[++k]=i;
			p[i]++;
			long long ii=i*i;
			for(int j=2*i;j<=mins;j+=i){
				w[j]=1;
				if(j%ii)
					p[j]++;
			}
		}
	
	for(int i=1;i<=k;++i){
		int ii=v[i]*v[i];
		if(ii>mins)
			break;
		for(int j=ii;j<=mins;j+=ii)
			p[j]=0;
	}
		
	for(int i=1;i<=k;++i)
		if(p[v[i]])
			if(p[v[i]]%2)
				s+=(c/v[i])*(d/v[i]);
			else
				s-=(c/v[i])*(d/v[i]);
			
	long long a=c*d;
	
	fprintf(g,"%lld",a-s);
	
	
	fclose(g);
	fclose(f);
	return 0;
}