博客
关于我
Codeforces round #649 1364A-XXXX(双指针)
阅读量:319 次
发布时间:2019-03-01

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

为了解决这个问题,我们需要找到一个最短的子数组,使得子数组的和不能整除给定的数x。如果不存在这样的子数组,则返回-1。

方法思路

  • 检查是否存在不能整除x的元素:如果数组中存在至少一个元素不能被x整除,那么这个元素本身就是最短子数组,长度为1。
  • 计算数组总和:如果数组中没有不能整除x的元素,计算数组总和。如果总和不能整除x,则整个数组的和不能被x整除,返回数组的长度n。
  • 处理特殊情况:如果数组总和能整除x,那么所有元素都能被x整除,返回-1。
  • 解决代码

    #include 
    #include
    using namespace std;int main() { int t; cin >> t; while (t--) { int n, x; cin >> n >> x; vector
    a(n); bool has_non_divisible = false; for (int num : a) { if (num % x != 0) { has_non_divisible = true; break; } } if (has_non_divisible) { cout << 1; continue; } long long sum_total = 0; for (int num : a) { sum_total += num; } if (sum_total % x != 0) { cout << n; } else { cout << -1; } }}

    代码解释

  • 读取输入:读取测试用例的数量t,然后逐个读取每个测试用例的n和x。
  • 检查元素:遍历数组检查是否存在不能整除x的元素。如果存在,直接输出1。
  • 计算总和:如果所有元素都能被x整除,计算数组总和。如果总和不能整除x,输出n;否则,输出-1。
  • 这种方法确保我们在O(n)的时间复杂度内解决问题,高效且直接。

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

    你可能感兴趣的文章
    NodeJS 导入导出模块的方法( 代码演示 )
    查看>>
    nodejs 的 Buffer 详解
    查看>>
    nodejs 读取xlsx文件内容
    查看>>
    nodejs 运行CMD命令
    查看>>
    nodejs+nginx获取真实ip
    查看>>
    nodejs-mime类型
    查看>>
    NodeJs——(11)控制权转移next
    查看>>
    NodeJS、NPM安装配置步骤(windows版本)
    查看>>
    NodeJS、NPM安装配置步骤(windows版本)
    查看>>
    nodejs与javascript中的aes加密
    查看>>
    nodejs中Express 路由统一设置缓存的小技巧
    查看>>
    Nodejs中的fs模块的使用
    查看>>
    nodejs包管理工具对比:npm、Yarn、cnpm、npx
    查看>>
    NodeJs单元测试之 API性能测试
    查看>>
    nodejs图片转换字节保存
    查看>>
    nodejs字符与字节之间的转换
    查看>>
    NodeJs学习笔记001--npm换源
    查看>>
    NodeJs学习笔记002--npm常用命令详解
    查看>>
    nodejs学习笔记一——nodejs安装
    查看>>
    NodeJS实现跨域的方法( 4种 )
    查看>>