Почему выдает «ошибка исполнения»
31.05.2013, 00:40. Показов 4253. Ответов 1
Доброго времени суток. У меня проблема. Сегодня написал свою первую программу на java и отправил решение на проверку на сайт Codeforces.ru . Но решение не прошло, вердикт «ошибка исполнения». Проверяю на компе, все работает. Почему выдает такую ошибку?
Вот сам код
| Java | ||
|
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
Используя ссылку ниже
http://codeforces.com/problemset/problem/556/B
Приведенный ниже код с использованием компилятора GNU C ++ 11 и этот код работает нормально
но я не знаю, как это работает?
#include<iostream>
#include<conio.h>
#include<windows.h>
int test(long int n,long int number[])
{
int flag=0;
for(int i=0;i<n;i++)
{
if(number[i+1]==number[i]+1)
flag++;
}
if(flag==n-1)
return 1;
else
return 0;
}
void rot_gears(long int n,long int number[])
{
system("cls");
int t;
for(long z=0;z<n*n;z++)
{
for(long i=0;i<n;i++)
{
if(i%2==0)
{
if(number[i]==n-1)
{
number[i]=0;
}
else
number[i]++;
}
else if(i%2!=0)
{
if(number[i]==0)
number[i]=n-1;
else
number[i]--;
}
}
t=test(n,number);
if(t==1)
break;
// output(n,number);
//cout<<"nn";
}
if(t)
std::cout<<"YES";
else
std::cout<<"NO";
}
int main()
{
long int n,teeth,number[10000];
std::cin>>n;
std::cin>>teeth;
for(long int i=n-1;i>=0;i--)
{
number[i]=teeth%10;
teeth/=10;
}
// output(n,number);
rot_gears(n,number);
return 0;
}
1
Решение
Я считаю, что нет способа казнить system("cls"); на машине судьи — просто удалите это из кода.
Также вы выходите за пределы здесь, когда i == n - 1:
for(int i=0;i<n;i++)
{
if(number[i+1]==number[i]+1)
// ^^^^^ here
Хотя технически вы не выходите за пределы массива, потому что n <= 1000, но в любом случае вы получаете доступ к неинициализированному элементу массива.
1
Другие решения
У меня есть прога которая находит минимум каждой строки и добавляет его в список.
Локально у меня все работает, но на проверяющей системе codeforces выдает ошибку.
Traceback (most recent call last):
File "program.pys3", line 1, in <module>
n = int(input())
EOFError: EOF when reading a line
вот сам код
n = int(input())
a = []
b = []
for i in range(n):
a.append([str(j) for j in input().split()])
for i in range(len(a)):
for j in range(1):
if len(a[i][0]) == 1:
b.append(a[i][0])
else:
for v in range(len(a[i][0])):
l = min(a[i][0][j], a[i][0][j+1])
a[i][0] = a[i][0][:j] + l + a[i][0][j+1:]
a[i][0] = a[i][0][:j+1] + l + a[i][0][j+2:]
b.append(l)
t_str = ''.join(map(str, b))
print(t_str)

задан 8 сен 2020 в 8:25
VladVlad
396 бронзовых знаков
3
Вы когда у себя проверяете — число n с клавиатуры вводите? Или из файла?
Может быть, дело в том, что на проверяющей системе некому ввести число?
Обычно указывают имя файла input.txt, из которого вводятся значения в программу. У вас нигде этого файла не указано. Поэтому и ошибка в первой же строке: Хозяин, я файл найти не могу! не знаю, какой искать!
ответ дан 8 сен 2020 в 8:32
![]()
S.H.S.H.
10.7k1 золотой знак15 серебряных знаков38 бронзовых знаков
3
Я пытаюсь решить проблему 1A для codeforces
Но я продолжаю получать Тест: # 1, время: 0 мс, память: 1828 КБ, код выхода: 1, код выхода из проверки: 0, вердикт: RUNTIME_ERROR Вы можете проверить мою запись здесь и найти мой код ниже, я пытался запустить программа локально, и она работает нормально, и она прошла тест-кейс на сайте
#include<stdio.h>
int calculateSquare(int n , int m , int a){
int length=0;
int width = 0;
if(n%a != 0){
length = (n/a)+1 ;
}
else{
length = n/a ;
}
if(m%a != 0){
width = (m/a)+1 ;
}
else{
width = m/a ;
}
return length*width ;
}
void main(){
int n,m,a ;
scanf("%d %d %d",&n,&m,&a);
int output = calculateSquare(n,m,a);
printf("%d",output);
}
3 ответа
Лучший ответ
int calculateSquare(int n , int m , int a)
Возвращаемый тип: int и возвращаемое значение: length*width
В худшем случае a будет 1 и n, m будет 10 9 , как указано в проблема
< Сильный > Ввод
Вход содержит три положительных целых числа в первом строка: n, m и a (1 ≤ n, m, a ≤ 10 9 ).
Таким образом, возвращаемый тип int не может содержать возвращаемое значение для такого случая.
Лучше использовать long long int, если компиляция соответствует стандарту C99.
1
Meninx — メネンックス
15 Фев 2017 в 01:31
При попытке «побить время» лучше не использовать «дорогие» функции I.O.
Предложить следующие две функции:
#include <stdio.h>
void fastRead( size_t *a );
void fastWrite( size_t a );
inline void fastRead(size_t *a)
{
int c=0;
// note: 32 is space character
while (c<33) c=getchar_unlocked();
// initialize result value
*a=0;
// punctuation parens, etc are show stoppers
while (c>47 && c<58)
{
*a = (*a)*10 + (size_t)(c-48);
c=getchar_unlocked();
}
//printf( "%s, value: %lun", __func__, *a );
} // end function: fastRead
inline void fastWrite(size_t a)
{
char snum[20];
//printf( "%s, %lun", __func__, a );
int i=0;
do
{
// 48 is numeric character 0
snum[i++] = (char)((a%10)+(size_t)48);
a=a/10;
}while(a>0);
i=i-1; // correction for overincrement from prior 'while' loop
while(i>=0)
{
putchar_unlocked(snum[i--]);
}
putchar_unlocked('n');
} // end function: fastWrite
0
user3629249
15 Фев 2017 в 11:03
Я изменил ваш код, как указано ниже, который, кажется, работает нормально:
#include <stdio.h>
long long int calculateSquare(long n , long m , long a){
long length=0;
long width = 0;
if(n%a != 0){
length = (n/a)+1 ;
}
else{
length = n/a ;
}
if(m%a != 0){
width = (m/a)+1 ;
}
else{
width = m/a ;
}
long long store = length*widthl
return store;
}
int main(){
long int n,m,a ;
scanf("%ld %ld %ld", &n, &m, &a);
long int output = calculateSquare(n,m,a);
printf("%ldn", output);
return 0;
}
0
Jarvis
15 Фев 2017 в 01:54
Я пытаюсь решить эту проблему:
http://codeforces.com/contest/664/problem/B
Вот мой код: http://ideone.com/fWgQEn
Я получаю Runtime Error на тестовом примере 5, хотя мой ответ правильный, и я печатаю его правильно.
Может ли кто-нибудь сказать мне, что может быть причиной этого?
#include<bits/stdc++.h>using namespace std;
int main(){
int i = 0, pos = 1, neg = 0, n;
string str;
char x;
while(1){
cin >> x;
if(x == '=') break;
else if (x == '?') continue;
else if (x == '+') pos++;
else if (x == '-') neg++;
str[i++] = x;
}
str[i] = '';
// cout << str[0] << str[1] << str.size() << endl;
cin >> n;if (!(pos * n - neg >= n && pos - neg * n <= n))
cout << "Impossible" << endl;else{
cout << "Possiblen";
int neg_sum, pos_sum;
for (int i = neg; i <= neg * n; i++){
pos_sum = n + i;
if(pos_sum <= pos * n && pos_sum >= pos) {
neg_sum = i; pos_sum = n + i;
break;
}
}
// cout << str.size() << endl;
// cout << pos_sum << " " << neg_sum << endl;
int pos_count = 1, neg_count = 0;
for(int i = -1 ; i < pos + neg - 1; i++){
// cout << "i " << i << " " << str[i] <<endl;
if(!(i + 1)){
if(pos == 1) cout << pos_sum << " ";
else cout << pos_sum / (pos - 1) << " ";
}
else{
if(str[i] == '+'){
if(pos_count++ != pos -1) cout << "+ "<< pos_sum / (pos - 1) << " ";
else cout << "+ "<< pos_sum % (pos - 1) << " ";
}
else{
if(neg == 1) cout << "- " << neg_sum << " ";
else if(neg_count++ != neg -1) cout << "- "<< neg_sum / (neg - 1) << " ";
else cout << "+ "<< neg_sum % (neg - 1) << " ";
}
}
}
cout << "= " << n;
}
return 0;
}
TIA !!