Меню

Что такое ошибка исполнения codeforces

Почему выдает «ошибка исполнения»

31.05.2013, 00:40. Показов 4253. Ответов 1


Доброго времени суток. У меня проблема. Сегодня написал свою первую программу на java и отправил решение на проверку на сайт Codeforces.ru . Но решение не прошло, вердикт «ошибка исполнения». Проверяю на компе, все работает. Почему выдает такую ошибку?
Вот сам код

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package javaapplication1;
import java.io.*;
import java.util.*;
 
 
public class JavaApplication1 {
    public static void main(String[] args) throws IOException {
        int [][]ar;
        int xPos = 0,yPos = 0,step = 0;
        ar = new int[5][5];
        Scanner A = new Scanner ( System.in);
      for (int i=0;i<5;i++)
      {
          for (int j = 0; j < 5; j++)
          {
          ar[i][j]=A.nextInt();
          if (ar[i][j] == 1) 
                  {
                     xPos = i;
                     yPos = j;
                  }
          }
      }
      while (xPos != 2)
      {
         if (xPos>2) {--xPos; step++;}
         if (xPos<2) {++xPos; step++;}
      }
      while (yPos !=2)
      {
          if (yPos>2) {--yPos; step++;}
          if (yPos<2) {++yPos; step++;}
      }
      System.out.print(step);
      }   
}

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь

Используя ссылку ниже

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

Vlad's user avatar

VladVlad

396 бронзовых знаков

3

Вы когда у себя проверяете — число n с клавиатуры вводите? Или из файла?

Может быть, дело в том, что на проверяющей системе некому ввести число?

Обычно указывают имя файла input.txt, из которого вводятся значения в программу. У вас нигде этого файла не указано. Поэтому и ошибка в первой же строке: Хозяин, я файл найти не могу! не знаю, какой искать!

ответ дан 8 сен 2020 в 8:32

S.H.'s user avatar

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 !!

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Что такое ошибка rom
  • Что такое ошибка выполнения microsoft vbscript