首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用fast I/O C++的不同答案

使用fast I/O C++的不同答案
EN

Stack Overflow用户
提问于 2021-08-22 10:22:35
回答 1查看 68关注 0票数 0

所以我一直在尝试编写程序来生成第一个,101个,201st个素数,直到10^8。我使用了ios_base,因此输出发生了变化,

代码语言:javascript
复制
vector<int> primes;
int maxx = 100000000;
int arr[100000000];

void sieve(){
  arr[0] = 1;
  arr[1] = 1;
  arr[2] = 0;
  primes.push_back(2);
  for(int i = 3;i < maxx; i+=2){
      if(arr[i]==0){
          primes.push_back(i);
          if(i*(ll)i < (ll)maxx){
              for(int j = i*i; j < maxx; j+=2*i){
                  arr[j] = 1;
              }
          }
      }
  }
}

int main()
{
    sieve();
    int i = 0, s= primes.size();
    while(i < s) {
        printf("%d\n", prime[i]);
        i += 100;
    }
    return 0;
}

这给出了正确的答案,并且解决方案被接受,但是如果我添加

代码语言:javascript
复制
ios_base::sync_with_stdio(false);
cin.tie(NULL);

生成的行不多,答案是错误的。为什么会发生这种情况?我到处找,但人们只说它能让程序更快,仅此而已。

EN

回答 1

Stack Overflow用户

发布于 2021-08-22 11:52:39

只有当有多个测试用例时,"ios_base::sync_with_stdio(false);cin.tie(NULL);“才会使输出更快。另外,我猜你没有接受任何输入。所以使用cin.tie(NULL)可能不是最好的主意。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68880398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档