Cod sursa(job #1724411)

Utilizator daniel.grosuDaniel Grosu daniel.grosu Data 3 iulie 2016 01:23:55
Problema Pascal Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include<bits/stdc++.h>
using namespace std;
int A2[5000055];
int A3[5000055];
int A5[5000055];
int rs,d,r;
int main(){
   	ifstream cin("pascal.in");
    ofstream cout("pascal.out");
   	
   	cin>>r>>d;
   	for(int i=1; i<=r; ++i)
   	{
   		int aux=i;
   		int a=0;
   		while(aux%2==0)
   			aux/=2, a++;
		A2[i]=A2[i-1]+a;
   		aux=i;
   		a=0;
   		while(aux%3==0)
   			aux/=3, a++;
		A3[i]=A3[i-1]+a;
   		aux=i;
   		a=0;
   		while(aux%5==0)
   			aux/=5, a++;
		A5[i]=A5[i-1]+a;
	}
	
	for(int i=1; i<=r-1; ++i)
	{
	int s; 	
		if(d==2) s=A2[r]-(A2[i]+A2[r-i])-1;
		if(d==3) s=A3[r]-(A3[i]+A3[r-i])-1;
		if(d==4) s=A2[r]-(A2[i]+A2[r-i])-2;
		if(d==5) s=A5[r]-(A5[i]+A5[r-i])-1;
		if(d==6) s=min(A2[r]-(A2[i]+A2[r-i])-1, A3[r]-(A3[i]+A3[r-i])-1); 	
		if(s>=0)
			rs++;
	}
	cout<<rs<<"\n";
   	
    return 0;
}