【发布时间】:2020-07-25 18:17:42
【问题描述】:
所以当我在向量中获取它的输出时,这个代码被接受了
#include <iostream>
#include<vector>
using namespace std;
int main(){
int t; cin >> t;
while(t--){
vector<int>v;
int n,k; cin >> n >> k;
for(int i=0;i<n;i++){
int x; cin >> x;
if(x%k==0) v.push_back(1);
else v.push_back(0);
}
for(auto x:v) cout <<x <<"";
cout << endl;
}
return 0;
}
但是当我直接打印时,这段代码给出了超出时间限制的错误
#include <bits/stdc++.h>
using namespace std;
#define ll long long int
int main()
{
int t;
cin>>t;
while(t--)
{
ll k,d;
int n,i;
cin>>n>>k;
for(i=0;i<n;i++)
{
cin>>d;
if(d%k==0)
cout<<"1";
else
cout<<"0";
}
cout<<"\n";
}
}
你能说出原因吗? (比赛现已结束)Here is the question in case
编辑:1 我使用 int 而不是 long long 以及 printf 和 cin.tie(NULL) 东西,但仍然无济于事
【问题讨论】:
-
控制台 I/O 很昂贵。如果可能,您应该避免将其置于繁忙的循环中。我认为这可能会对性能产生巨大影响。在大多数情况下,您最好先获取所有输入、处理,然后打印所有输出,因为在这种情况下,I/O 可能是您的瓶颈。
-
可能无关紧要,但代码中还有其他区别:您在第二个中使用
long long,并打印字符串而不是整数。比较 2 段代码时,请尝试删除除您要比较的内容之外的所有差异。 -
... 这只是第 n 个例子,说明如果某人的目标是学习 C++,他们不会从这些毫无价值的竞赛中学到任何东西。在几乎所有情况下,就像这个一样,正确的解决方案是需要了解特定的编程技巧。如果您不知道诀窍是什么并尝试编写蛮力方法,则程序运行缓慢并因此而失败。如果你想学习 C++,你不会从毫无意义的在线竞赛网站 but only from a good C++ textbook 学到任何东西。
-
@SamVarshavchik -- 不幸的是,似乎很多新手都在专注于解决这些问题,因为他们被告知如果他们能解决这些问题,他们将在一家大型软件公司获得一份丰厚的工作并获得某种“高等级”来展示一些招聘人员。当我问他们“这些测试有什么好处?”时,我似乎得到了反驳。这可能也是为什么你看到很多绝望的呼喊,有时在这些问题上没有任何努力的原因——必须在问题网站上获得这些排名点。
-
我不知道它是否会提供一份有利可图的工作,但它绝对是 Google Code Jam 或 Kickstart 或 FB Hacker's cup 的一个很好的练习场
标签: c++