博客
关于我
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/

    你可能感兴趣的文章
    oracle partition by list,深入解析partition-list 分区
    查看>>
    Oracle PL/SQL Dev工具(破解版)被植入勒索病毒的安全预警及自查通告
    查看>>
    oracle pl/sql 导出用户表结构
    查看>>
    Oracle PLSQL Demo - 17.游标查询个别字段(非整表)
    查看>>
    【C/C++学院】(6)构造函数/析构函数/拷贝构造函数/深copy浅copy
    查看>>
    oracle rac 安装 PRVG-13606 ntp 同步报错解决过程
    查看>>
    Oracle RAC性能调整的方案
    查看>>
    oracle rac集群的东西之QQ聊天
    查看>>
    UML— 用例图
    查看>>
    Oracle Schema Objects——Tables——Table Compression
    查看>>
    oracle scott趣事
    查看>>
    oracle script
    查看>>
    Oracle select表要带双引号的原因
    查看>>
    Oracle SOA Suit Adapter
    查看>>
    Oracle Spatial GeoRaster 金字塔栅格存储
    查看>>
    Oracle spatial 周边查询SQL
    查看>>
    Oracle Spatial空间数据库建立
    查看>>
    UML— 活动图
    查看>>
    oracle sqlplus已停止工作,安装完成客户端后sqlplus报“段错误”
    查看>>
    oracle SQLserver 函数
    查看>>