Cod sursa(job #966274)

Utilizator geniucosOncescu Costin geniucos Data 25 iunie 2013 16:48:40
Problema Mins Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include<cstdio>
using namespace std;
int i,j,n,m,mi;
long long phi[1000009];
long long calc(int n,int m)
{
    if(n>m) return calc(m,n);
    if(n==0) return 0;
    return phi[n]*(m/n)+calc(n,m%n);
}
int main()
{
freopen("mins.in","r",stdin);
freopen("mins.out","w",stdout);
scanf("%d",&n);
scanf("%d",&m);
n--;m--;
mi=n;
if(m<mi) mi=m;
for(i=1;i<=mi;i++)
    phi[i]=i;
for(i=2;i<=mi;i++)
    if(phi[i]==i)
    {
        for(j=i;j<=mi;j+=i)
        {
            phi[j]/=i;
            phi[j]*=(i-1);
        }
    }
for(i=2;i<=mi;i++)
    phi[i]*=2;
for(i=2;i<=mi;i++)
    phi[i]+=phi[i-1];
printf("%lld\n",calc(n,m));
return 0;
}