首页 > 代码库 > 1449 砝码称重(思维)

1449 砝码称重(思维)

题目链接:https://www.51nod.com/onlineJudge/submitDetail.html#!judgeId=259281

 

题解:这题有一个技巧,毕竟是w^0,w^1,w^2....这样,必然会想到w进制,而且就只能用一次。

那么就简单了,把m拆成w进制,然后就自行解决了。

 

#include <iostream>#include <cstring>using namespace std;typedef long long ll;ll num[40];int main() {    ll n , m;    cin >> n >> m;    ll gg = m;    int count = 0;    while(gg) {        num[count++] = gg % n;        gg /= n;    }    int flag = 0;    for(int i = 0 ; i < count ; i++) {        if(num[i] >= 2) {            if(num[i] != n - 1) {flag = 1; break;}            num[i + 1]++;        }    }    if(!flag) cout << "YES" << endl;    else cout << "NO" << endl;    return 0;}

1449 砝码称重(思维)