![]() |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
![]() ![]() |
![]() |
klem4 |
![]()
Сообщение
#1
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Всем привет
![]() Решил в качестве хобби в последнее время убить двух зайцев, поизучать с++ и порешать интересные задачки, нашел сайт с онлайнтестером и начал решать. На одной из задач (достаточно простой по моему мнению), мне упорно заявляют Wrong answer ![]() Задание (на английском языке) находится тут: http://acm.uva.es/p/v4/488.html Еще одно описание с тестовыми данными тут: http://www.algorithmist.com/index.php/UVa_488 Онлайн судья тут: http://uva.onlinejudge.org/ мой код тут:
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int tests, freq, ampl;
string blank, result_str;
string get_wave( int a )
{
string wave;
vector<string> lines;
for (int i = 0; i < a; i++ )
{
string line;
char c = (char)(49 + i);
for ( int j = 0; j <= i; j++ )
{
line.push_back(c);
}
lines.push_back(line);
}
for (int i = 0; i < 2 * a - 1; i++)
{
int idx = i < a ? i : (2*a - i - 2);
wave.append(lines[idx]);
wave.append("\n");
}
return wave;
}
int main()
{
cin >> tests; // читаем кол-во тестов
getline( cin, blank ); // читаем пустую строку
while ( --tests >= 0 )
{
cin >> ampl; // по каждому тесту читаем 2 подрят идущих строки с амплитудой и частотой
cin >> freq;
// далее никаких пустых строк не читаем, получаеим и сохраняем результат для данного теста и переходим к чтению следующих 2-х строк (если это не последний тест)
string wave = get_wave( ampl );
for (int i = 0; i < freq; ++i )
{
result_str.append( wave );
if (!( i == freq - 1 && tests == 0))
{
result_str.append("\n");
}
else
{
result_str.erase(result_str.length() - 1);
}
}
}
cout << result_str;
return 0;
}
Сообщение отредактировано: klem4 - 1.12.2010 23:24 -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
Lapp |
![]()
Сообщение
#2
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
подозреваю, что в силу недостаточного знания английского, не точно понял формат ввода/вывода Я подозреваю, что дело в пустых строках.. Проверить сейчас не могу (. Пришли, плз, результат работы с такими входными данными:2
3
2
4
3
Только постарайся точнее. То есть, выведи в файл t.txt, например, и прикрепи сюда. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
volvo |
![]()
Сообщение
#3
|
Гость ![]() |
Цитата Я подозреваю, что дело в пустых строках.. Нет... Только что проверил (принудительно читал пустую строку после каждой пары Ampl/Freq), он все равно выдает Wrong Answer (klem4, я твой код не спалил, по-другому сделал чуть-чуть, если надо - потом объясню, ты много лишнего делаешь, все проще гораздо, в STL много разных конструкторов, циклы не нужны) |
klem4 |
![]()
Сообщение
#4
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Lapp, В приведенном тобой наборе входных данных между парами амплетуды и частоты есть пустая строка, в тестовом примере на этой странице, ее нету
3 2 4 3 , а на странице онлайтестера приведены данные для одного теста ![]() Если адаптировать чтение данных учитывая этот пробел, результат будет такимже как и без него ![]() добавлено: volvo, было бы интересно посмотреть на более короткое решение, с STL только недавно познакомился) Сообщение отредактировано: klem4 - 1.12.2010 23:43 Прикрепленные файлы ![]() -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
Lapp |
![]()
Сообщение
#5
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Lapp, В приведенном тобой наборе входных данных между парами амплетуды и частоты есть пустая строка, в тестовом примере на этой странице, ее нету Гм. Цитата , and there is also a blank line between two consecutive inputs - как тогда понимать это? Видимо, так, что input != set, и может быть несколько input'ов.. ??-------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
В общем, у меня получилось вот так:
#include <iostream>
#include <vector>
#include<iterator>
using namespace std;
void get_wave(int ampl)
{
for(int j = 1; j <= ampl; j++)
{
vector<int> v(j, j);
copy(v.begin(), v.end(), ostream_iterator<int>(cout, ""));
cout << endl;
}
for(int j = ampl - 1; j > 0; j--)
{
vector<int> v(j, j);
copy(v.begin(), v.end(), ostream_iterator<int>(cout, ""));
cout << endl;
}
}
int main()
{
long tests;
while(cin >> tests)
{
long ampl, freq;
for(long k = 1; k <= tests; k++)
{
cin >> ampl >> freq;
for(long i = 1; i <= freq; i++)
{
get_wave(ampl);
if(i < freq || k < tests) { cout << endl; }
}
}
}
return 0;
}
. Они действительно подразумевают возможность нескольких input-ов... klem4, можно, наверное, и в одну строку все вытягивать, но по-моему, смысла нет, лучше печатать порцию после каждого input-а... (я переделал на vector<int>, чтоб с твоим решением не совпадало, а то мало ли, может они там отслеживают ![]() |
klem4 |
![]()
Сообщение
#7
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Я так понимаю, этот вариант тебе сдать удалось ? Не очень ясно, чтоже надо ввести, чтобы внешний while закончился) Если только не цифру..
![]() -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
-Volvo- |
![]()
Сообщение
#8
|
Гость ![]() |
Не надо "не цифру", введи Ctrl+Z - это остановит работу с потоком (и это то, что сделает онлайн-тестер), и все корректно завершится.
|
![]() ![]() |
![]() |
Текстовая версия | 17.07.2025 21:46 |