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

    你可能感兴趣的文章
    Nuget~管理自己的包包
    查看>>
    NuGet学习笔记001---了解使用NuGet给net快速获取引用
    查看>>
    nullnullHuge Pages
    查看>>
    NullPointerException Cannot invoke setSkipOutputConversion(boolean) because functionToInvoke is null
    查看>>
    null可以转换成任意非基本类型(int/short/long/float/boolean/byte/double/char以外)
    查看>>
    Numix Core 开源项目教程
    查看>>
    numpy
    查看>>
    NumPy 库详细介绍-ChatGPT4o作答
    查看>>
    NumPy 或 Pandas:将数组类型保持为整数,同时具有 NaN 值
    查看>>
    numpy 或 scipy 有哪些可能的计算可以返回 NaN?
    查看>>
    numpy 数组 dtype 在 Windows 10 64 位机器中默认为 int32
    查看>>
    numpy 数组与矩阵的乘法理解
    查看>>
    NumPy 数组拼接方法-ChatGPT4o作答
    查看>>
    numpy 用法
    查看>>
    Numpy 科学计算库详解
    查看>>
    Numpy.fft.fft和numpy.fft.fftfreq有什么不同
    查看>>
    Numpy.ndarray对象不可调用
    查看>>
    Numpy.VisibleDeproationWarning:从不整齐的嵌套序列创建ndarray
    查看>>
    Numpy:按多个条件过滤行?
    查看>>
    Numpy:条件总和
    查看>>