n=1n=1 则任务已经完成;

否则,若 m=1m=1 则任务无法完成;(做不了任何事情)

否则,由于最终要消除恰好 n1n-1 个硬币,每次操作恰好消除 m1m-1 个硬币,只需要判断 m1m-1 是否能整除 n1n-1 即可。

#include<cstdio>
int init(){
	char c = getchar();
	int x = 0, f = 1;
	for (; c < '0' || c > '9'; c = getchar())
		if (c == '-') f = -1;
	for (; c >= '0' && c <= '9'; c = getchar())
		x = (x << 1) + (x << 3) + (c ^ 48);
	return x * f;
}
void print(int x){
	if (x < 0) x = -x, putchar('-');
	if (x > 9) print(x / 10);
	putchar(x % 10 + '0');
}
int main(){
    int n = init(), m = init();
    if (n == 1) puts("Yes");
    else if (m == 1) puts("No");
    else puts((n-1) % (m-1) == 0 ? "Yes" : "No");
}