#include #include #include #include using namespace std; // FILE* in = fopen("game.in","r"); FILE* out = fopen("game.out","w"); int main() { int a, b; fscanf (in, "%d%d", &a, &b); if (a > b) { swap(a, b); } vector < long long > ok; ok.push_back(0); for (int i = 1 ; i <= a ; i ++) { if (a % i == 0 and b % i == 0) { ok.push_back (i); } } int k; fscanf (in, "%d", &k); for (int i = 0 ; i < k ; i ++) { int l, r; fscanf (in, "%d%d", &l, &r); int answerL, answerR; int j; for (j = 0 ; l > ok [j] ; j ++){} answerL = j - 1; //printf ("%d\n", j); for ( ; r > ok [j] ; j ++){} answerR = j - 1; //printf ("%d\n", j); if (binary_search (ok.begin(), ok.end(), l)) { if (binary_search (ok.begin(), ok.end(), r)) { fprintf (out, "%d\n", answerR - answerL + 1); //printf ("%d - %d = %d\n", answerR, answerL, answerR - answerL + 1); } else { fprintf (out, "%d\n", answerR - answerL); //printf ("%d - %d = %d\n", answerR, answerL, answerR - answerL); } } else { if (binary_search (ok.begin(), ok.end(), r)) { fprintf (out, "%d\n", answerR - answerL); //printf ("%d - %d = %d\n", answerR, answerL, answerR - answerL); } else { fprintf (out, "%d\n", answerR - answerL); //printf ("%d - %d = %d\n", answerR, answerL, answerR - answerL); } } } fclose (in); fclose (out); }