思路:
做这种题,第一步就是搞清楚题目要干什么,其实这个题目就是判断一个式子是否成立:
我们观察可以发现,每次都只有第一项不一定是的倍数,其他一定是
的倍数.那么每次我们都判断下
,然后将
.然后一直处理到
即可,假如中途不成立,那么输出
,否则就是
.
当然还有个值得注意的地方就是你代码应该先检测-1,再检测1.比如说你m=1,你检测-1/+1都是可以的,但是你先+1的话,就会死循环.
代码:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int w,m;
cin>>w>>m;
while(m)
{
if(m%w==0) ;
else if((m-1)%w==0) m--;
else if((m+1)%w==0) m++;
else
{
puts("NO");return 0;
}m/=w;
}puts("YES");
return 0;
}
京公网安备 11010502036488号