Pagini recente » Cod sursa (job #263326) | Cod sursa (job #2516405) | Cod sursa (job #1521957) | Cod sursa (job #2293375) | Cod sursa (job #2919528)
// This program was written by Mircea Rebengiuc
// on 17.08.2022
// for problem pinex
#include <stdio.h>
#include <ctype.h>
using ll = long long;
#define MAXP 20
FILE *fin, *fout;
ll div[MAXP];
ll solve_testcase(){
ll lim, x, d, ans = 0;
int np, mask, semn, cp, i;
fscanf( fin, "%lld%lld", &lim, &x );
d = 2;
np = 0;
while( d * d <= x ){
if( !(x % d) ){
div[np++] = d;
while( !(x % d) )
x /= d;
}
d++;
}
if( x > 1 )
div[np++] = x;
for( mask = (1 << np) ; mask-- ; ){
cp = mask;
semn = 0;
d = 1;
for( i = 0 ; i < np ; i++ ){
if( cp & 1 ){
d *= div[i];
semn ^= 1;
}
cp >>= 1;
}
ans += (semn * -2 + 1) * (lim / d);
}
return ans;
}
int main(){
fin = fopen( "pinex.in", "r" );
fout = fopen( "pinex.out", "w" );
int t;
for( fscanf( fin, "%d", &t ) ; t-- ; )
fprintf( fout, "%lld\n", solve_testcase() );
fclose( fin );
fclose( fout );
return 0;
}