Перейти к контенту
Почему выдает «ошибка исполнения»
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 !!
Доброго времени суток. У меня проблема. Сегодня написал свою первую программу на 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
Другие решения
I was trying to do the first problem in codeforces just to be familiar with it.
It gives results when I try it on my Ipython notebook, but always gives runtime error when I upload it on codeforces. Can anyone help?
Problem:
Theatre Square in the capital city of Berland has a rectangular shape with the size n × m meters. On the occasion of the city’s anniversary, a decision was taken to pave the Square with square granite flagstones. Each flagstone is of the size a × a.
What is the least number of flagstones needed to pave the Square? It’s allowed to cover the surface larger than the Theatre Square, but the Square has to be covered. It’s not allowed to break the flagstones. The sides of flagstones should be parallel to the sides of the Square.
Input:
The input contains three positive integer numbers in the first line: n, m and a (1 ≤ n, m, a ≤ 109).
Output:
Write the needed number of flagstones.
Sample testcase:
Input - 6 6 4 , Output - 4
My attempt:
a = map(int,raw_input().split())
l,b,s = a[0],a[1],a[2]
print(((l+s-1)/s)*((b+s-1)/s))
EDIT:
There is not much explanation about the error other than «Runtime Error on test 1». Also, if it helps, time used was 92 ms, and memory used was 0 KB.
Я пытаюсь решить эту проблему:
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 !!