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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 48, средняя оценка - 4.77
Bohes_
4 / 4 / 0
Регистрация: 18.06.2013
Сообщений: 51
#1

Выведите в выходной файл округленное до n знаков после десятичной точки число E - C++

05.08.2013, 11:17. Просмотров 6068. Ответов 53
Метки нет (Все метки)

Как пишутся очень короткие программы на C++ или C (менее 150 символов, не считая пробелов и табуляций)?
Например, задача
Выведите в выходной файл округленное до n знаков после десятичной точки число E. Число Е, округленное до 25 знаков после десятичной точки, равно 2.7182818284590452353602875.

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

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

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

В выходной файл OUTPUT.TXT выведите ответ на задачу.
Вот мое решение на 255 символов:
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <fstream>,<string>
 
int main()
{
    std::string e = "2.71828182845904523536028750";
    std::ifstream f ("input.txt");
    std::ofstream o("output.txt");
    int a,i;
    
    f >> a;
    if (a==0) 
            o << 3;
         else
        {
            if (e[a+2] > 52) e[a+1]++;
            for (i=0; i <= a+1 ;++i)
                o<<e[i];
        }   
    
    return 0;
}
Некоторым удается написать решения на 130, 156, 171 символов. Как это у них получается?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.08.2013, 11:17
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Выведите в выходной файл округленное до n знаков после десятичной точки число E (C++):

Вывести в выходной файл округленное до n знаков после десятичной точки число E - C++
Выведите в выходной файл округленное до n знаков после десятичной точки число E. Число Е, округленное до 25 знаков после десятичной точки,...

Округлить число до 25 знаков после десятичной точки - C++
Есть простая задача: вот я ее решаю таким способом, т.к в задании написано округлить #include &lt;fstream&gt; #include &lt;string&gt;...

Вывести в файл число с заданным количеством знаков после точки - C++
Как это сделать, нигде не нашёл.(

Округление числа до n знаков после десятичной точки - C++
Решил задачу для новичков по C++. Задача совсем для зелёных новичков, кто только-только начал изучать C++, и у меня есть ощущение, что её...

Выведите первую цифру числа после десятичной точки - C++
Дано положительное действительное число X. Выведите его первую цифру после десятичной точки. Пример Входные данные: 14.85 ...

Вычислить функцию с точностью 6 знаков после десятичной точки - C++
)Вычислить функцию f(x,a)= при x=0.4, 0.6,..., 1.2 и a=2, 3, 4, 5 с точностью 6 знаков после десятичной точки.

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Bohes_
4 / 4 / 0
Регистрация: 18.06.2013
Сообщений: 51
06.08.2013, 17:27  [ТС] #31
Цитата Сообщение от Schizorb Посмотреть сообщение
main(int n)
Как я писал выше, такое объявление переменной не подходит для тестирующей системы.
Цитата Сообщение от Schizorb Посмотреть сообщение
o << (!s[4] + n % 2 ? "Yes" : "No");
Очень элегантное решение
nonedark2008
904 / 643 / 131
Регистрация: 28.07.2012
Сообщений: 1,737
06.08.2013, 17:28 #32
Цитата Сообщение от Schizorb Посмотреть сообщение
!s[4] + n % 2
Приоритет операций?
Bohes_
4 / 4 / 0
Регистрация: 18.06.2013
Сообщений: 51
06.08.2013, 17:28  [ТС] #33
Цитата Сообщение от nonedark2008 Посмотреть сообщение
o << *s-72 && !(x%2)?"No":"Yes";
Без скобок тоже проходит
К сожалению, не проходит
Schizorb
509 / 461 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
06.08.2013, 17:29 #34
nonedark2008, что с ним не так?
Bohes_
4 / 4 / 0
Регистрация: 18.06.2013
Сообщений: 51
06.08.2013, 17:39  [ТС] #35
Цитата Сообщение от Schizorb Посмотреть сообщение
nonedark2008, что с ним не так?
Ваше решение работает:
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
#include <fstream>
 
int main()
{
    int x;
    char s[9];
    std::fstream f("input.txt"), o ("output.txt",2);
    f>>s>>x;
    o<<(!s[4] + x % 2 ? "Yes" : "No");      
}
128 символов

Добавлено через 6 минут
Schizorb, !s[4] это проверка на что ?
Schizorb
509 / 461 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
06.08.2013, 17:42 #36
Цитата Сообщение от Bohes_ Посмотреть сообщение
Schizorb, !s[4] это проверка на что ?
Проверка на нуль-символ. В слове "Home" у него будет индекс 4 (поэтому !s[4] вернет истину), а в слове "School" - там буковка (вернет ложь).
Bohes_
4 / 4 / 0
Регистрация: 18.06.2013
Сообщений: 51
06.08.2013, 17:51  [ТС] #37
[QUOTE=Bohes_;4921653]Ваше решение работает:
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
#include <fstream>
 
int main()
{
    int x;
    char s[9];
    std::fstream f("input.txt"), o ("output.txt",2);
    f>>s>>x;
    o<<(!s[4] + x % 2 ? "Yes" : "No");      
}
121 символ
gray_fox
What a waste!
1511 / 1214 / 69
Регистрация: 21.04.2012
Сообщений: 2,550
Завершенные тесты: 3
06.08.2013, 20:21 #38
Цитата Сообщение от Bohes_ Посмотреть сообщение
C++
1
o<<(!s[4] + x % 2 ? "Yes" : "No");
может так прокатит:
C++
1
o << (*s & ~x & 1 ? "No" : "Yes");
Somebody
2788 / 1602 / 145
Регистрация: 03.12.2007
Сообщений: 4,193
Завершенные тесты: 1
06.08.2013, 21:25 #39
PWNED! Число E сделал 94 символа Код как-нибудь потом выложу, если никто сам не придумает, а пока несколько подсказок:
1) Пробелы и ещё кое-какие похожие на них символы не считаются, даже если они внутри строки в кавычках. Строку можно преобразовать циклом по определённому алгоритму.
2) Если код больше 16k символов, то вместо подсчёта символов используется размер файла. (Из-за много пришлось подумать.)
3) Можно использовать функцию system.
Bohes_
4 / 4 / 0
Регистрация: 18.06.2013
Сообщений: 51
07.08.2013, 05:35  [ТС] #40
Цитата Сообщение от gray_fox Посмотреть сообщение
может так прокатит:
C++
1
o << (*s & ~x & 1 ? "No" : "Yes");
Time limit exceeded

Добавлено через 4 часа 20 минут
Цитата Сообщение от Somebody Посмотреть сообщение
PWNED! Число E сделал 94 символа Код как-нибудь потом выложу, если никто сам не придумает, а пока несколько подсказок:
1) Пробелы и ещё кое-какие похожие на них символы не считаются, даже если они внутри строки в кавычках. Строку можно преобразовать циклом по определённому алгоритму.
2) Если код больше 16k символов, то вместо подсчёта символов используется размер файла. (Из-за много пришлось подумать.)
3) Можно использовать функцию system.
1)Как не странно, но табуляции иногда считаются
2) А смысл писать файл в 16Кб? Все равно с 16к символами в рейтинг не пролезешь...
3)В system есть значение экспоненты?
diagon
Higher
1929 / 1195 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
07.08.2013, 10:46 #41
Цитата Сообщение от Bohes_ Посмотреть сообщение
Time limit exceeded
acmp вчера сильно глючил, там один проверяющий сервер (медленный) стабильно выдавал WA\TLE\RE\ETC.
Решалось одновременной посылкой 3-4 исходников.

Цитата Сообщение от Somebody Посмотреть сообщение
Можно использовать функцию system.
О, видимо вайтспейсы все-таки разбанили... Ну или их вообще не банили >_<
У меня на 130 символов тоже вайтспейсы, но только там все делается в лоб (без system).
А, если не секрет, какой язык использовался в system?

P.S. в дом-школа-дом обновил рекорд до 113 символов. А именно, сократил эту строку
C++
1
o << (*s & ~x & 1 ? "No" : "Yes");
на 1 символ + 1 сэкономил один символ на студийной особенности.
Somebody
2788 / 1602 / 145
Регистрация: 03.12.2007
Сообщений: 4,193
Завершенные тесты: 1
07.08.2013, 10:53 #42
Цитата Сообщение от Bohes_ Посмотреть сообщение
1)Как не странно, но табуляции иногда считаются
Да, я заметил. Но если хорошо подумать, то есть ещё другой символ, который не считается.
Цитата Сообщение от Bohes_ Посмотреть сообщение
2) А смысл писать файл в 16Кб? Все равно с 16к символами в рейтинг не пролезешь...
Я думал, это уже понятно: в решении несколько тысяч пробелов. Но если будет больше 16k, то они все посчитаются в размере.
Цитата Сообщение от Bohes_ Посмотреть сообщение
3)В system есть значение экспоненты?
В смысле можно ли какой-то командой получить экспоненту? Наверное, нет.

Добавлено через 2 минуты
Цитата Сообщение от diagon Посмотреть сообщение
О, видимо вайтспейсы все-таки разбанили... Ну или их вообще не банили >_<
Не, даже табуляция в строке считается. Но всё-таки там не учли одну возможность, которую можно эксплойтить.
Цитата Сообщение от diagon Посмотреть сообщение
А, если не секрет, какой язык использовался в system?
Пишется и выполняется bat файл. (Без промежуточного bat'а не получилось.)
Dani
1393 / 637 / 57
Регистрация: 11.08.2011
Сообщений: 2,282
Записей в блоге: 2
Завершенные тесты: 1
07.08.2013, 11:21 #43
Цитата Сообщение от Somebody Посмотреть сообщение
Не, даже табуляция в строке считается.
Все-таки считается? Вроде ж нет...
При подсчете размера кода не учитываются пробелы, а так же символы переноса и табуляции.
Somebody
2788 / 1602 / 145
Регистрация: 03.12.2007
Сообщений: 4,193
Завершенные тесты: 1
07.08.2013, 11:27 #44
Внутри закавыченной строки точно считается, в остальных местах - не проверял.
Dani
1393 / 637 / 57
Регистрация: 11.08.2011
Сообщений: 2,282
Записей в блоге: 2
Завершенные тесты: 1
07.08.2013, 11:44 #45
Somebody, внутри закавыченной строки не считаются же пробелы.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.08.2013, 11:44
Привет! Вот еще темы с ответами:

Дано вещественное число, проверить является ли это число симметричным относительно положения точки до двух знаков после запятой. - C++
Только начинаю программировать на с/с++ и столкнулась с логическими выражениями, простейшие задачи могу решить а в эту никак не могу...

Задача на струтуру. В выходной файл выведите время, оставшееся от t1 до t2 в формате hh:mm:ss - C++
Дано время t1 и время t2. Гарантируется, что t1 и t2 -время одного дня, а также что t1&lt;t2. Определить, сколько времени пройдет от t1 до t2....

Округление знаков, после точки - C++
Столкнулся с проблемой при работе с float float x1 = 1.0000000000000000; float x2 = x1 + 0.111111111111; float x3 = x2 +...

Количество знаков до и после точки - C++
К примеру, есть число 123.0087 и мне нужно, чтобы вывело в textBox1 число 3 - количество знаков до точки; и в textBox2 число 4 - количество...


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

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

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