博客
关于我
Adding Powers
阅读量:586 次
发布时间:2019-03-12

本文共 1203 字,大约阅读时间需要 4 分钟。

要解决这个问题,我们需要判断给定的整型数组中的每个数字是否可以表示为数字k的不同次方的和,其中每个指数不能重复使用。我们可以通过将每个数字转换为k进制,并检查每个位上的数字是否为0或1来解决这个问题。

解题思路

  • 进制转换:将每个数字转换为k进制,检查每个位上的数字是否为0或1。如果所有位上的数字都满足这个条件,则可以表示为k的不同次方的和。
  • 指数检查:在转换过程中,记录使用的指数,确保每个指数只使用一次。如果在转换过程中发现需要重复使用指数,则无法表示。
  • 解决代码

    #include 
    using namespace std;bool spilt(ll x, int k, bool* num) { int cou = 0; while (x) { int temp = x % k; x /= k; if (temp > 1) return false; if (temp && num[cou]) return false; if (temp) num[cou] = true; cou++; } return true;}int main() { int t; cin >> t; while (t--) { bool* num = new bool[100]; int n, k; cin >> n >> k; ll x; bool possible = true; for (int i = 1; i <= n; ++i) { cin >> x; if (!spilt(x, k, num)) { possible = false; break; } } if (possible) { cout << "YES" << endl; } else { cout << "NO" << endl; } delete[] num; } return 0;}

    代码解释

  • spilt函数:这个函数检查一个数字是否可以表示为k的不同次方的和。它通过不断除以k,检查余数是否为0或1,并记录使用的指数。
  • main函数:读取输入,处理每个数字,调用spilt函数进行检查。如果所有数字都能分解,输出"YES",否则输出"NO"。
  • 通过这种方法,我们可以高效地判断每个数字是否能表示为k的不同次方的和,并确保每个指数只使用一次。

    转载地址:http://fbetz.baihongyu.com/

    你可能感兴趣的文章
    【无线通信模块】GPRS DTU不稳定和容易掉线原因
    查看>>
    SpringBoot使用RedisTemplate简单操作Redis的五种数据类型
    查看>>
    国标流媒体服务器以ROOT身份运行提示“permission denide”报错解决
    查看>>
    国标流媒体服务器在linux系统运行提示fork/exec ……/redis/redis-server错误解决方案
    查看>>
    国标GB28181协议视频推流平台EasyGBD在Linux下编译报“UINT64_C在此作用领域中尚未声明”错误
    查看>>
    qt中转到槽后如何取消信号与槽关联
    查看>>
    qt问题记录-spin box与double spin box
    查看>>
    移动端事件
    查看>>
    css 图片按比例缩放
    查看>>
    小程序form表单里面buton点击事件失效
    查看>>
    微信小程序placeholder设置自定义样式
    查看>>
    spring-day01
    查看>>
    spring的值注入与组件扫描
    查看>>
    C#跨窗体程序调用方法的具体操作
    查看>>
    C#中创建Android项目
    查看>>
    统计学之变异系数与是非标志
    查看>>
    关于继承的一些基本知识
    查看>>
    抖音发布黄金时间段,抖音上热门最佳时间
    查看>>
    我的图床~
    查看>>
    Thymeleaf sec:authorize 标签不生效
    查看>>