C++ 对于Snackdown'19 codechef挑战中提出的问题,找不到为什么一个代码工作而另一个显示运行时错误的区别?
Snackdown'19 codechef挑战中提出的问题 有N个人编号为1到N。最初,只有1个人 知道吃零食的事。每一天,每一个已经知道 Snackdown告诉其他人这件事。对于每个有效的我,我可以 每天告诉最多Ai人。人们在人群中传播信息 那些不知道如何在他们的生活中按升序吃零食的人 指数你可以假设没有两个人试图告诉别人 同时小吃。每个人只允许开始 在他/她被绑架后的第二天就告诉其他人关于Snackdown的事 要了解这一点,第一个人可以开始告诉其他人 第一天。所有人需要多少天才能知道这件事 小吃 输入:输入的第一行包含一个表示 测试用例的数量。T测试用例的描述如下。这个 每个测试用例的第一行包含一个整数N。第二行包含一个整数N 行包含N个空格分隔的整数A1、A2、…、AN 输出:对于每个测试用例,打印一行,其中包含一个整数- 天数 这个问题的一个代码显示运行时错误,而第二个代码工作得非常好。这是在SNACKWN'19资格赛中提出的。由于比赛已经结束,所以我想澄清为什么显示运行时错误C++ 对于Snackdown'19 codechef挑战中提出的问题,找不到为什么一个代码工作而另一个显示运行时错误的区别?,c++,runtime-error,C++,Runtime Error,Snackdown'19 codechef挑战中提出的问题 有N个人编号为1到N。最初,只有1个人 知道吃零食的事。每一天,每一个已经知道 Snackdown告诉其他人这件事。对于每个有效的我,我可以 每天告诉最多Ai人。人们在人群中传播信息 那些不知道如何在他们的生活中按升序吃零食的人 指数你可以假设没有两个人试图告诉别人 同时小吃。每个人只允许开始 在他/她被绑架后的第二天就告诉其他人关于Snackdown的事 要了解这一点,第一个人可以开始告诉其他人 第一天。所有人需要多少天才能知道这件事
#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;
}