版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sugarbliss/article/details/82725490
----------------------------------------------------传送门----------------------------------------------------
思路:题目要求最终结果为一个硬币,所以倒推n == 1时, 上一个状态n == 1 + (m - 1),把1 + (m - 1),再看成一个硬币,上上一个状态n = 1 + (m - 1) + (m - 1)........所以n = 1 + (m - 1) * k。
#include<bits/stdc++.h>
using namespace std;
#define mem(a,b) memset(a,b,sizeof(a))
#define LL long long
const int MAX_N = 100005;
int main()
{
int n, m;
cin >> n >> m;
if(n == 1 || m != 1 && (n - 1) % (m - 1) == 0) puts("Yes");
else puts("No");
}