• CF1312C Adding Powers


    首先可以转化为在第 (i) 次操作,可以选择不做,也可以选择把 (pos) 位置上的数减去 (k^i),问能否经过若干次操作把所有数字变成 (0)

    然后由此可以想到 (k) 进制,把每个数分解,记分解完的第 (i)(x_i),那么根据题目要求 (x_i) 不能大于 (1),那么我们开个桶 (cnt_i) 表示所有数的 (k) 进制表示下第 (i) 位的和,然后扫一遍判断是否有大于 (1) 的。

    #include <bits/stdc++.h>
    #define reg register
    #define ll long long
    #define ull unsigned long long
    #define db double
    #define pi pair<int, int>
    #define pl pair<ll, ll>
    #define vi vector<int>
    #define vl vector<ll>
    #define vpi vector<pi>
    #define vpl vector<pl>
    #define pb push_back
    #define er erase
    #define SZ(x) (int) x.size()
    #define lb lower_bound
    #define ub upper_bound
    #define all(x) x.begin(), x.end()
    #define rall(x) x.rbegin(), x.rend()
    #define mkp make_pair
    #define ms(data_name) memset(data_name, 0, sizeof(data_name))
    #define msn(data_name, num) memset(data_name, num, sizeof(data_name))
    #define For(i, j) for(reg int (i) = 1; (i) <= (j); ++(i))
    #define For0(i, j) for(reg int (i) = 0; (i) < (j); ++(i))
    #define Forx(i, j, k) for(reg int (i) = (j); (i) <= (k); ++(i))
    #define Forstep(i , j, k, st) for(reg int (i) = (j); (i) <= (k); (i) += (st))
    #define fOR(i, j) for(reg int (i) = (j); (i) >= 1; (i)--)
    #define fOR0(i, j) for(reg int (i) = (j) - 1; (i) >= 0; (i)--)
    #define fORx(i, j, k) for(reg int (i) = (k); (i) >= (j); (i)--)
    #define tour(i, u) for(reg int (i) = head[(u)]; (i) != -1; (i) = nxt[(i)])
    using namespace std;
    char ch, B[1 << 20], *S = B, *T = B;
    #define getc() (S == T && (T = (S = B) + fread(B, 1, 1 << 20, stdin), S == T) ? 0 : *S++)
    #define isd(c) (c >= '0' && c <= '9')
    int rdint() {
      int aa, bb;
      while(ch = getc(), !isd(ch) && ch != '-');
      ch == '-' ? aa = bb = 0 : (aa = ch - '0', bb = 1);
      while(ch = getc(), isd(ch))
        aa = aa * 10 + ch - '0';
      return bb ? aa : -aa;
    }
    ll rdll() {
      ll aa, bb;
      while(ch = getc(), !isd(ch) && ch != '-');
      ch == '-' ? aa = bb = 0 : (aa = ch - '0', bb = 1);
      while(ch = getc(), isd(ch))
        aa = aa * 10 + ch - '0';
      return bb ? aa : -aa;
    }
    const int mod = 998244353;
    // const int mod = 1e9 + 7;
    struct mod_t {
      static int norm(int x) {
        return x + (x >> 31 & mod);
      }
      int x;
      mod_t() {  }
      mod_t(int v) : x(v) {  }
      mod_t(ll v) : x(v) {  }
      mod_t(char v) : x(v) {  }
      mod_t operator +(const mod_t &rhs) const {
        return norm(x + rhs.x - mod);
      }
      mod_t operator -(const mod_t &rhs) const {
        return norm(x - rhs.x);
      }
      mod_t operator *(const mod_t &rhs) const {
        return (ll) x * rhs.x % mod;
      }
    };
    const int MAXN = 60;
    int n, k, cnt[MAXN];
    ll a[MAXN];
    inline void work() {
      n = rdint();
      k = rdll();
      ms(cnt);
      For(i, n) {
        a[i] = rdll();
      }
      For(i, n) {
        for(reg int j = 0; a[i]; ++j, a[i] /= k) {
          cnt[j] += a[i] % k;
        }
      }
      For0(i, MAXN) {
        if(cnt[i] > 1) {
          puts("NO");
          return;
        }
      }
      puts("YES");
    }
    int main() {
      // freopen("input.txt", "r", stdin);
      int _ = rdint();
      while(_--) {
        work();
      }
      return 0;
    }
    
  • 相关阅读:
    Docker外包团队 2019年3月更新 企业如何使用Docker
    2019年3月更新 技术分享 WPF基本界面制作
    Winform外包团队 项目案例展示
    WinForm外包公司 WInform外包项目监控案例展示
    H5外包团队 android视频压缩,使用ffmpeg方案
    为什么选择Go语言 GO语言都能做什么产品
    Go外包 Go语言外包 Golang外包商 浅谈Go的全局变量和生命周期
    SaaS外包商 承接SaaS产品开发 Software-as-a-Service(软件即服务)
    北京U3D外包团队 UE4红军抗战案例 Unity3D红军抗战案例 UE4下载和安装虚幻4游戏引擎
    Unity3D外包 团队更新一下UE4和Unity3D案例
  • 原文地址:https://www.cnblogs.com/Lonely-233/p/13659175.html
Copyright © 2020-2023  润新知