51nod1344-贪心&进制思想&好题-砝码称重

xiaoxiao2021-02-28  99

https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1449 我们发现n就是两个w进制做的差。 当且仅当 两个w进制并不能做出来n的话,就不可以了。 而如果能做出来n,那么n必然也是w进制数。 所以我们对n进行w进制下的分解。 因为每个砝码最多一次,所以每次分解,余数也就是 位数。 必须为0或1. 但是。。还有一种情况,那就是这一项给上一位借了一位, 这时候计算上一位(左面时),就要加1.

#include <bits/stdc++.h> using namespace std; /*相当于两个m进制的数 做减法,差为n。 于是总共有 两种情况 1-1=0; 0-1=m-1(借一位) 1-0=1; 0-0=0; 如果出现其他情况。就不可以了。(那就需要一些相同的砝码了) */ int main() { int m,n; scanf("%d%d",&m,&n); bool flag=true; while(n){ int tmp=n%m; if(tmp==1||tmp==0) n=n/m;//往右走一位 else if(tmp==m-1){ n=(n+1)/m; } else {flag=false;break;} } if(flag) puts("YES"); else puts("NO"); return 0; }
转载请注明原文地址: https://www.6miu.com/read-30305.html

最新回复(0)