Cod sursa(job #1724423)

Utilizator daniel.grosuDaniel Grosu daniel.grosu Data 3 iulie 2016 02:05:21
Problema Pascal Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 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)
   	{
   		if(i%2==0)
   		A2[i]+=A2[i/2]+1;
   		
   		if(i%3==0)
   		A3[i]+=A3[i/3]+1;
   	
   		if(i%5==0)
   		A5[i]+=A5[i/5]+1;
   	}
   	
   	for(int i=1; i<=r; ++i)
   	{
		A2[i]=A2[i-1]+A2[i];
   		A3[i]=A3[i-1]+A3[i];
   		A5[i]=A5[i-1]+A5[i];
   		
	}
	//cout<<A5[10000]<<"\n";
		
	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;
}