Кружок Хорового Пения

MahovIV

New Member
06.07.2013
2
0
#1
У меня проблема с задачей. Вот её условие.
В некотором учебном заведении функционирует кружок хорового пения. Начало кружка всегда происходит единообразно: по сигналу руководителя кружка все N участников становятся в круг и каждый M-й для распевки поёт гамму.

Руководитель кружка заметил, что размять голосовые связки не всегда удаётся всем участникам кружка. По заданным N и M помогите ему определить, или в очередной раз в разминке примут участие все участники хора.
Input

Входные данные состоят из нескольких тестовых случаев. Каждый тестовый случай расположен в отдельной строке и содержит два целых числа N и M. (1 <= N, M <= 1000).
Output

Для каждого тестового случая в отдельной строке выведите "YES", если в разминке примут участие все участники хора, в противном случае выведите "NO".
Код:
#include <stdio.h>

int main() {

int N, K, pr = 0, pr2 = 0, sum = 0, r;
while(scanf("%d %d", &N, &K) != EOF) {
pr = N;
pr2 = K;
r = N % K;
while(r!=0) {
N = K;
K = r;
r = N % K;
}
sum = pr * pr2 / K;
if(K == 1) {
printf("YES\n");
}
if(pr == sum && K != 1) {
printf("NO\n");
}
if(pr != sum && K != 1) {
printf("YES\n");
}
}
return 0;
}
 
R

rrrFer

Гость
#2
По заданным N и M помогите ему определить, или в очередной раз в разминке примут участие все участники хора.
че там надо определить то?
------------
есть наборы тестов?
программа не работает? - я не вникал в алгоритм, но он похож на что-то правильное.
 

MahovIV

New Member
06.07.2013
2
0
#3
че там надо определить то?
------------
есть наборы тестов?
программа не работает? - я не вникал в алгоритм, но он похож на что-то правильное.
Воспользуйтесь окружностью. Соединены между собой N элементов, при этом отмечается каждый M-ый элемент. Например, N == 10 и M == 2. Отмечаем каждый второй элемент. Круг кончается на последнем элементе окружности. И так по кругу. Так как никогда не отмечаются все элементы окружности, то в разминке не смогут принять участие все участники хора. Новый круг начинается с того элемента, который идёт после того элемента, на котором закончился первый круг. То есть, если N == 5 и N == 2, то круг заканчивается на участнике номер 4. Новый круг начинается с элемента под номером 1 и так далее.