繁体   English   中英

我需要有关 cpp 中奇怪的时间限制超出错误的帮助

[英]I need help regarding weird time limit exceeded error in cpp

所以当我把它的 output 放在一个向量中时,这个代码被接受了

#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";
    }
}

你能说出为什么吗? (比赛现已结束)这是一个问题,以防万一

编辑:1 我使用 int 而不是 long long 以及 printf 以及 cin.tie(NULL) 的东西,但仍然无济于事

在 for 循环体中使用 cout 的实现肯定会在 cout output 上出现瓶颈,特别是考虑到模运算相比之下非常便宜。

请参阅以下问题作为参考:

C++:cout 语句是否会使代码变慢

这样的事情会更好:

#include <bits/stdc++.h> 
#include <vector>
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;
        
        std::vector<bool> r(n);
        for(i=0;i<n;i++)
        {
            cin>>d;
            if(d%k==0)
                r[i] = true;
        }
        
        for(auto i : r)
            cout<<(i ? '1' : '0')<<endl;
        
        cout<<"\n";
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM