我提交了解决方案,并在第 4 个测试用例中出现时间限制错误
I Submitted the solution and got time limit error in 4th test case
这是代码力的问题我已经提交了一个解决方案,我得到了 TLE。如何移除 TLE
#include<bits/stdc++.h>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
unsigned int y, k, n;
set <int> s;
cin >> y >> k >> n;
if (y >= n)
{
cout << -1; return 0;
}
for (int i = y + 1; i <= n; i++)
{
if (i%k == 0)
{
s.insert(i - y);
}
}
if (s.begin() == s.end())
{
cout << -1; return 0;
}
for (auto x : a)
cout << x << " ";
}
问题似乎在算法层面。相反,要生成所有候选i
值,然后测试它们是否可以被k
整除,您可以直接在循环中生成这些值,增量等于 k
。
最小值imin
等于k*((y+1)/k)
或k*((y+1)/k) + k
,取决于y+1
是否可以被k
整除。
有两个好处:您考虑k
更少的候选人,并且您避免了昂贵的%
操作。
而且,当你找到一个值时,你可以直接打印出来,不需要记住它。
编辑:这是代码
#include <iostream>
int main()
{
std::ios::sync_with_stdio(false);
unsigned int y, k, n;
std::cin >> y >> k >> n;
unsigned int imin = k*((y+1)/k);
if (imin < y+1) imin += k;
if (imin > n) {
std::cout << -1;
return 0;
}
for (unsigned int i = imin; i <= n; i+=k)
{
std::cout << i-y << " ";
}
return 0;
}
编辑2:通过改变循环的边界可以避免最后i-y
计算
相关文章:
- 如何使用重载的相等(==)运算符向测试用例添加描述
- 从父数组测试用例构造二叉树失败
- 在Raspbian上编译pybind11测试用例时出现致命错误
- 我遇到了黑客排名中的问题"TWO STRINGS"的三个测试用例的分段错误。原因是什么?
- 某些测试用例未通过
- 如何在多个 Catch2 测试用例中检查相同的条件
- 谷歌启动2018,测试用例中的整数错误
- 用于查找连续子数组的最大总和的代码使测试用例失败
- 查找不适用于 c++ 中特定测试用例的最长子字符串
- 测试用例状态为失败,但返回的值为 true
- kill syscommand 在 Catch2 测试用例中失败
- 大型测试用例中C++ dfs 问题中的小错误
- 为什么在输入的第一行输入测试用例数量后得到垃圾值?
- C++ Catch 是否有类似 NUnit 的测试用例的东西,具有多个参数/输入选项
- 如何修复此代码对几个测试用例的错误答案?
- 所有测试用例都将小数点转换为二进制数
- C++回文检查解决方案被一个测试用例跳闸
- 测试用例大小为 10 的向量失败
- 我提交了解决方案,并在第 4 个测试用例中出现时间限制错误
- 二进制搜索程序。在应用测试用例时给出正确的输出仍然显示" "超出时间限制" "错误