Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 对于Snackdown'19 codechef挑战中提出的问题,找不到为什么一个代码工作而另一个显示运行时错误的区别?_C++_Runtime Error - Fatal编程技术网

C++ 对于Snackdown'19 codechef挑战中提出的问题,找不到为什么一个代码工作而另一个显示运行时错误的区别?

C++ 对于Snackdown'19 codechef挑战中提出的问题,找不到为什么一个代码工作而另一个显示运行时错误的区别?,c++,runtime-error,C++,Runtime Error,Snackdown'19 codechef挑战中提出的问题 有N个人编号为1到N。最初,只有1个人 知道吃零食的事。每一天,每一个已经知道 Snackdown告诉其他人这件事。对于每个有效的我,我可以 每天告诉最多Ai人。人们在人群中传播信息 那些不知道如何在他们的生活中按升序吃零食的人 指数你可以假设没有两个人试图告诉别人 同时小吃。每个人只允许开始 在他/她被绑架后的第二天就告诉其他人关于Snackdown的事 要了解这一点,第一个人可以开始告诉其他人 第一天。所有人需要多少天才能知道这件事

Snackdown'19 codechef挑战中提出的问题

有N个人编号为1到N。最初,只有1个人 知道吃零食的事。每一天,每一个已经知道 Snackdown告诉其他人这件事。对于每个有效的我,我可以 每天告诉最多Ai人。人们在人群中传播信息 那些不知道如何在他们的生活中按升序吃零食的人 指数你可以假设没有两个人试图告诉别人 同时小吃。每个人只允许开始 在他/她被绑架后的第二天就告诉其他人关于Snackdown的事 要了解这一点,第一个人可以开始告诉其他人 第一天。所有人需要多少天才能知道这件事 小吃

输入:输入的第一行包含一个表示 测试用例的数量。T测试用例的描述如下。这个 每个测试用例的第一行包含一个整数N。第二行包含一个整数N 行包含N个空格分隔的整数A1、A2、…、AN

输出:对于每个测试用例,打印一行,其中包含一个整数- 天数

这个问题的一个代码显示运行时错误,而第二个代码工作得非常好。这是在SNACKWN'19资格赛中提出的。由于比赛已经结束,所以我想澄清为什么显示运行时错误

#include<bits/stdc++.h>
using namespace std;
int main() {
    int t,s;
    int n;
    cin>>t;
    int count;
    while(t--) {
        count=0;
        cin>>n;
        int B[1000009];
        cin>>B[0];
        for (int i = 1; i < n; ++i) {cin>>s;B[i]=B[i-1]+s;}
        for(int i=1;i<n;i+=B[i-1]) {
            count++;            
        }
        cout<<count<<'\n';
    }  
    return 0;
}
使用while循环执行时


似乎工作正常。请帮助。

两个程序都包含cin>>n行;但是第一个是使用操作符>>istream&,int&第二个是使用操作符>>istream&,long long&

此模式对所有流提取调用重复


当输入不适合int时,这两个将表现得非常不同。

请尽可能在StackOverflow中发布代码,其他源可能会脱机,或者每个人都无法访问,就像在这种情况下,我编辑了我的帖子。谢谢你的建议。你试过在调试器中单步执行代码吗?是的,这两个代码在gdb测试时都工作得很好。同样在我的本地g++编译器中,它工作得很好。第一个代码有for循环,第二个代码有while循环。Rest所有代码都是相同的,但是第一个代码中的codechef编译器运行时错误。我已经用long测试了它。而问题中给出的约束是10^6,可以放入int数据类型。@ShivamSahu:我多次检查了您问题中的问题描述,但没有找到约束。当我跟踪你的链接时,没有显示任何有用的内容。也许该站点依赖于Javascript?这就是为什么将所有相关信息放在StackOverflow post中很重要的原因。限制条件1≤T≤1,000 2≤N≤10^5所有测试用例的N之和不超过10^6 0≤艾岛≤N对于每个有效的i 1≤A1..在输出后给出。
#include<bits/stdc++.h>
using namespace std;
#define ll long long
int main() {
  int q;
  ll n;
  ll s;
  ll B[1000005];
  ll l,count;
  cin>>q;
  while(q--) {
    l=1;
    count=0;
    cin>>n;
    cin>>B[0];
    for(int i=1;i<n;i++) {
      cin>>s;
      B[i] = B[i-1]+s;
    }
    while(l<n) {
      count++;
      l+=B[l-1];
    }
    cout<<count<<"\n";
  }
  return 0;
}