Pagini recente » Cod sursa (job #2606698) | Cod sursa (job #2235395) | Cod sursa (job #1408924) | Cod sursa (job #267284) | Cod sursa (job #865364)
Cod sursa(job #865364)
#include<iostream>
#include<fstream>
#include<bitset>
using namespace std;
#define NMAX 1000001
bitset <NMAX> p;
int fact[NMAX],d[NMAX];
inline void ciur()
{
int i,j;
for(i=2;i<=NMAX-1;i++)
if(p[i]==0) {
for(j=i+i;j<=NMAX-1;j=j+i)
p[j]=1;
fact[++fact[0]]=i;
}
}
inline int pinex(int a, int b)
{
int nr,i,j,k,sol,prod;
k=0;
i=1;
while(b>1 && i<=fact[0]) {
if(b%fact[i]==0) {
d[++k]=fact[i];
while(b%fact[i]==0)
b=b/fact[i];
}
i++;
}
if(b>1)
d[++k]=b;
sol=0;
for(i=1;i<=(1<<k)-1;i++) {
nr=0;
prod=1;
for(j=0;j<=k-1;j++)
if(i&(1<<j)) {
nr++;
prod=prod*d[j+1];
}
if(nr%2)
nr=1;
else nr=-1;
sol=sol+nr*a/prod;
}
return a-sol;
}
int main ()
{
int c,d,i;
long long sol;
ifstream f("mins.in");
ofstream g("mins.out");
f>>c>>d;
f.close();
sol=0;
for(i=1;i<=c-1;i++)
sol=sol+pinex(d-1,i);
g<<sol;
g.close();
return 0;
}