Pagini recente » Cod sursa (job #711248) | Cod sursa (job #1159948) | Cod sursa (job #955025) | Cod sursa (job #60946) | Cod sursa (job #109413)
Cod sursa(job #109413)
#include <stdio.h>
#define in "pairs.in"
#define out "pairs.out"
#define NMAX 1000001
typedef int INT;
INT cmmdc( INT a, INT b );
INT cmmdc( INT a, INT b )
{
INT k = 0;
if ( a == 0 ) return b;
if ( b == 0 ) return a;
while ( (a&1) == 0 && (b&1) == 0 )
{
a >>= 1;
b >>= 1;
k++;
}
while ( a != b )//cel putin unul este impar
{
if ( (a&1) == 0 )
{
a >>= 1;
}
else if ( (b&1) == 0 )
{
b >>= 1;
}
//amandoua impare
else if ( a > b )
{
a = (a-b) >> 1;
}
else b = (b-a) >> 1;//diferenta lor este un numar par
}
return a << k;
}
int n, a[NMAX];
int nrsol;
int main()
{
freopen( in, "r", stdin );
freopen( out, "w", stdout );
scanf( "%d\n", &n );
int i, j;
for ( i = 1; i <= n; ++i )
scanf( "%d\n", &a[i] );
/*for ( i = 1; i <= n; ++i )
printf( "%d ", a[i] );
*/
for ( i = 1; i < n; ++i )
{
for ( j = i + 1; j <= n; ++j )
{
if ( cmmdc(a[i],a[j]) == 1 )
{
nrsol++;
//printf( "%d %d\n", a[i], a[j] );
}
}
}
printf( "%d\n", nrsol );
return 0;
}