Nu aveti permisiuni pentru a descarca fisierul grader_test17.ok
Cod sursa(job #193506)
Utilizator | Data | 4 iunie 2008 19:44:53 | |
---|---|---|---|
Problema | Fractii | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.82 kb |
#include"stdio.h"
#include"stdint.h"
#include <cstdlib>
long x,v[2000],vv;
long long out;
long cm(const long a,const long b)
{
for(int g=1;g<vv;g++)if((a/v[g])*v[g]==a && (b/v[g])*v[g]==b)return 0;
return 1;
}
int val(const int_fast32_t x,const int_fast32_t y)
{
if(!x||!y)return 0;
if(cm(x,y)==1)return 1;
return 0;
}
int prim(int g)
{
for(int l=1;l<g;l++)if(v[g]%v[l]==0)return 0;
return 1;
}
void gen_prime(int p_no)
{v[1]=2;
for(int g=2;v[g]<=p_no;g++)
{
v[g]=v[g-1]+1;
while(!prim(g))
v[g]++;
vv++;
}
}
int main()
{
freopen("fractii.out","w",stdout);
freopen("fractii.in","r",stdin);
scanf("%ld",&x);gen_prime(x);
for(int_fast32_t g=0;g<(x+1)*(x+1)-1;g++){out+=val(g%(x+1),(g+1)/(x+1));}
printf("%lld",out);
return 0;
}