Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
костя666674555
-94 / 0 / 0
Регистрация: 02.01.2014
Сообщений: 78
#1

Сократить код ( Вырубка деревьев (Время: 1 сек. Память: 16 Мб Сложность: 46%) - C++

18.01.2014, 19:44. Просмотров 1090. Ответов 11
Метки нет (Все метки)

всем привет решил написать код от 24-ой задачи с ********
Вырубка деревьев
(Время: 1 сек. Память: 16 Мб Сложность: 46%)
Король Флатландии решил вырубить некоторые деревья, растущие перед его дворцом. Деревья перед дворцом короля посажены в ряд, всего там растет n деревьев, расстояния между соседними деревьями одинаковы.
После вырубки перед дворцом должно остаться m деревьев, и расстояния между соседними деревьями должны быть одинаковыми. Помогите королю выяснить, сколько существует способов вырубки деревьев.
Требуется написать программу, которая по заданным числам n и m определит, сколько существует способов вырубки некоторых из n деревьев так, чтобы после вырубки осталось m деревьев и соседние деревья находились на равном расстоянии друг от друга.

Входные данные

Входной файл INPUT.TXT содержит два целых числа n и m (0 ≤ m , n ≤ 1000).

Выходные данные

В единственную строку выходного файла OUTPUT.TXT нужно вывести одно целое число — искомое число способов.

Пример

INPUT.TXTOUTPUT.TXT
15 34
Пояснение к примеру

Если обозначить условно исходное расположение деревьев перед дворцом как «TTTTT», то возможные результаты после вырубки следующие:

«TTT..», «.TTT.», «..TTT», «T.T.T».
вот код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <fstream>
int main(){
    std::fstream f("input.txt"),q("output.txt",2);
    int a,b,i=0;
    f>>a>>b;
    if(a==b){
        q<<1;
    }else{
    if(b==1){
        q<<a;
    }else{
    b=b-1;
    int k=a/b;
    int p=a-b;
    long long c=(b*((k*(k-1))/2));
    int o=(k*p)-c;
    q<<(o<0 ? 1 : o);
}
    }
}
Размер кода: 212
в топе лутшее решение (с++) 120 символов
как сократить код?

Добавлено через 8 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <fstream>
int main(){
    std::fstream f("input.txt"),q("output.txt",2);
    int a,b,i=0;
    f>>a>>b;
    if(a==b){
        q<<1;
    }else{
    if(b==1){
        q<<a;
    }else{
    b=b-1;
    int o=((a/b)*(a-b))-(b*(((a/b)*((a/b)-1))/2));
    q<<(o<0 ? 1 : o);
}
    }
}
Размер кода: 198
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.01.2014, 19:44
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сократить код ( Вырубка деревьев (Время: 1 сек. Память: 16 Мб Сложность: 46%) (C++):

НОД (Время: 1 сек. Память: 16 Мб Сложность: 15%) - C++
есть задача ********/?main=task&amp;id_task=148 и есть код #include &lt;fstream&gt; main(){ std::fstream i( &quot;input.txt&quot; ), o( &quot;output.txt&quot;,...

Единицы (Время: 1 сек. Память: 16 Мб Сложность: 16%) - C++
задача http://********/?main=task&amp;id_task=22 с ацмп есть код #include&lt;fstream&gt; main(){ std::fstream i(&quot;input.txt&quot;),o(&quot;output.txt&quot;,...

Сократить время работы и выделяемую память - C#
Помогите оптимизировать программу. using System; class Program { static void Main(string args) { int...

Joomla 3 время требуется сократить время отклика - Joomla
Добрый день господа! Требуется ускорить загрузку сайта сайт moscowbrand.ru работает более 5 лет, шаблон, время отклика 500-1000 мс. ...

Задача о ранце. Как сократить память? - C#
Доброго времени суток! Получил задание решить классическую задачу о ранце. Есть N предметов, у каждого предмета есть вес и цена, есть...

Сложность во время запуска - Компьютерное железо
Здравствуйте. Вы моя последняя надежда и опора. В общем я решил обновить своей девушке ПК, что бы она могла играть в Sims 3. Заказал много...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
KOPOJI
Модератор
Эксперт HTML/CSSЭксперт PHP
16695 / 6621 / 431
Регистрация: 12.06.2012
Сообщений: 19,875
Завершенные тесты: 1
18.01.2014, 19:50 #2
Цитата Сообщение от костя666674555 Посмотреть сообщение
Размер кода: 198
а как вы его считаете? З.Ы. ваш же код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <fstream>
int main(){
    std::fstream f("input.txt"),q("output.txt",2);
    int a,b,o;
    f>>a>>b;
    if(a==b--)
        q<<1;
    else{
        if(!b)
            q<<a;
        else{
            o=((a/b)*(a-b))-(b*(((a/b)*((a/b)-1))/2));
            q<<(o<0 ? 1 : o);
        }
    }
}
костя666674555
-94 / 0 / 0
Регистрация: 02.01.2014
Сообщений: 78
18.01.2014, 19:59  [ТС] #3
Цитата Сообщение от KOPOJI Посмотреть сообщение
а как вы его считаете? З.Ы. ваш же код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <fstream>
int main(){
    std::fstream f("input.txt"),q("output.txt",2);
    int a,b,o;
    f>>a>>b;
    if(a==b--)
        q<<1;
    else{
        if(!b)
            q<<a;
        else{
            o=((a/b)*(a-b))-(b*(((a/b)*((a/b)-1))/2));
            q<<(o<0 ? 1 : o);
        }
    }
}
в смысле считаю?
KOPOJI
Модератор
Эксперт HTML/CSSЭксперт PHP
16695 / 6621 / 431
Регистрация: 12.06.2012
Сообщений: 19,875
Завершенные тесты: 1
18.01.2014, 20:00 #4
размер кода
костя666674555
-94 / 0 / 0
Регистрация: 02.01.2014
Сообщений: 78
18.01.2014, 20:14  [ТС] #5
C++
1
2
3
4
5
6
7
8
#include <fstream>
#define  o ((a/b)*(a-b))-(b*(((a/b)*((a/b)-1))/2))
int main(){
    std::fstream f("input.txt"),q("output.txt",2);
    int a,b;
    f>>a>>b;
    a==b-- ? q<<1 : !b ? q<<a : q<<(o <0 ? 1 : o);
}
Размер кода: 168

Добавлено через 1 минуту
C++
1
2
3
4
5
6
7
8
#include <fstream>
#define  o ((a/b)*(a-b))-(b*(((a/b)*((a/b)-1))/2))
int main(){
    std::fstream f("input.txt"),q("output.txt",2);
    int a,b;
    f>>a>>b;
    q<<(a==b-- ? 1 : !b ? a : o <0 ? 1 : o);
}
Размер кода: 162

Добавлено через 4 минуты
Цитата Сообщение от KOPOJI Посмотреть сообщение
размер кода
так это не я это http://********

Добавлено через 3 минуты
C++
1
2
3
4
5
6
7
8
#include <fstream>
#define  o ((a/b)*(a-b))-(b*(((a/b)*((a/b)-1))/2))
main(){
    std::fstream f("input.txt"),q("output.txt",2);
    int a,b;
    f>>a>>b;
    q<<(a==b-- ? 1 : !b ? a : o <0 ? 1 : o);
}
Размер кода: 159
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
23404 / 15395 / 4535
Регистрация: 22.10.2011
Сообщений: 27,374
Записей в блоге: 4
18.01.2014, 20:19 #6
C++
1
2
3
4
5
6
7
#include <fstream>
int main(){
    std::fstream f("input.txt"),q("output.txt",2);
    int a,b,k;
    f>>a>>b;
    q<<(a==b?1:(b--==1?a:(k=a/b,(k=k*(a-b)-b*(k*(k-1)/2))<0?1:k)));
}
153
KOPOJI
18.01.2014, 20:19
  #7

Не по теме:

костя666674555, макрос неверно составлен. Стоит только изменить на отрицательное значение, как выполнение станет неверным. Как минимум, надо так, а это +4 символа. Помимо этого, в плюсах вместо макросов используют встроенные функции..

C
1
#define  o ((a/b)*((a)-(b)))-(b*(((a/b)*((a/b)-1))/2))

костя666674555
-94 / 0 / 0
Регистрация: 02.01.2014
Сообщений: 78
18.01.2014, 20:26  [ТС] #8
Цитата Сообщение от KOPOJI Посмотреть сообщение

Не по теме:

костя666674555, макрос неверно составлен. Стоит только изменить на отрицательное значение, как выполнение станет неверным. Как минимум, надо так, а это +4 символа. Помимо этого, в плюсах вместо макросов используют встроенные функции..

C
1
#define  o ((a/b)*((a)-(b)))-(b*(((a/b)*((a/b)-1))/2))

acmp переваривает

Добавлено через 1 минуту
C++
1
2
3
4
5
6
7
#include <fstream>
main(){
    std::fstream f("input.txt"),q("output.txt",2);
    int a,b,k;
    f>>a>>b;
    q<<(a==b?1:(b--==1?a:(k=a/b,(k=k*(a-b)-b*(k*(k-1)/2))<0?1:k)));
}
150
KOPOJI
Модератор
Эксперт HTML/CSSЭксперт PHP
16695 / 6621 / 431
Регистрация: 12.06.2012
Сообщений: 19,875
Завершенные тесты: 1
18.01.2014, 20:31 #9
еще на пару символов короче
C++
1
2
3
4
5
6
7
#include <fstream>
int main(){
    std::fstream f("input.txt"),q("output.txt",2);
    int a,b,k;
    f>>a>>b;
    q<<(a==b?1:(!--b?a:(k=a/b,(k*=(a-b)-b*(k*(k-1)/2))<0?1:k)));
}
Добавлено через 2 минуты

Не по теме:

и код все более и более становится похожим на код лиспа..

костя666674555
-94 / 0 / 0
Регистрация: 02.01.2014
Сообщений: 78
18.01.2014, 20:33  [ТС] #10
C++
1
2
3
4
5
6
7
#include <fstream>
main(){
    std::fstream f("input.txt"),q("output.txt",2);
    int a,b,k;
    f>>a>>b;
    q<<(a==b?1:(!--b?a:(k=a/b,(k*=(a-b)-b*(k*(k-1)/2))<0?1:k)));
}
147
KOPOJI
Модератор
Эксперт HTML/CSSЭксперт PHP
16695 / 6621 / 431
Регистрация: 12.06.2012
Сообщений: 19,875
Завершенные тесты: 1
18.01.2014, 20:46 #11
Еще минус 4
C++
1
2
3
4
5
6
7
#include <fstream>
main(){
    std::fstream f("input.txt"),q("output.txt",2);
    int a,b,k;
    f>>a>>b;
    q<<(a==b?1:!--b?a:k=a/b,(k*=(a-b)-b*(k*(k-1)/2))<0?1:k);
}
костя666674555
-94 / 0 / 0
Регистрация: 02.01.2014
Сообщений: 78
19.01.2014, 10:48  [ТС] #12
Цитата Сообщение от KOPOJI Посмотреть сообщение
Еще минус 4
C++
1
2
3
4
5
6
7
#include <fstream>
main(){
    std::fstream f("input.txt"),q("output.txt",2);
    int a,b,k;
    f>>a>>b;
    q<<(a==b?1:!--b?a:k=a/b,(k*=(a-b)-b*(k*(k-1)/2))<0?1:k);
}
Wrong answer 1 60 Кб
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.01.2014, 10:48
Привет! Вот еще темы с ответами:

Время выполнения(сложность) - C++
Как вычислить время выполнения программы? и что такое NlogN?

Ограничить время симуляции 600 сек - GPSS
Смоделировать работу системы в течение 600 сек. Я ограничил по лимиту 600 транзактов, как сделать лимит по времени, чтобы после 600-ой...

Сократить время компиляции программы - Turbo Pascal
Сегодня был на олимпиаде решил задачу но за задачу мне дали всего лишь пол балла, потому что время превысил, у меня часто так, пожалуйста,...

Возможно ли сократить время вычислений? - Delphi БД
У меня проблема-вопрос, возможно ли уменьшить время вычислений, а то я полный делетант. Есть база из 50к записей с кучей полей различного...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
19.01.2014, 10:48
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru