Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/18: Рейтинг темы: голосов - 18, средняя оценка - 4.56
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230

Timus. Задача 1209. 1, 10, 100, 1000

17.12.2014, 13:23. Показов 3799. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Сразу скажу что на данном форуме с данной задачей я прочитал штук 5 тем. Но в каких то нет отличий от моего кода, в каких то вообще нет решения.

Ошибка в решении: Time limit exceeded. № теста 3.

Вроде уменьшил количество операций до минимума, даже сделал так, что если встречаются повторные числа, то результат берется из буфера, а не считается по новой. (хотя я не уверен что это вообще уменьшает время, но даже без этого не работает). Считает все правильно, но вот только робот утверждает что слишком долго...

http://acm.timus.ru/problem.aspx?space=1&num=1209

C#
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
using System;
using System.Collections.Generic;
public class Test
{
    private static void Main()
    {        
        ushort n = ushort.Parse(Console.ReadLine());
        string result = "";
        int t;
        List<int> a0 = new List<int>(); // тут храним уже найденные числа, результат которых 0
        List<int> a1 = new List<int>(); // тут храним уже найденные числа, результат которых 0
        for (ushort i = 0; i < n; i++)
        {
            t = int.Parse(Console.ReadLine());
            if (a1.IndexOf(t) != -1)
            {
                result += " 1";
            }
            else if (a0.IndexOf(t) != -1)
            {
                result += " 0";
            }
            else if (((Math.Sqrt((8 * t) - 7) -1) / 2)%1 == 0) // если результат целый, то число нам подходит
            {
                a1.Add(t);
                result += " 1";
            }
            else
            {
                a0.Add(t);
                result += " 0";
            }
        }
        Console.WriteLine("{0}", result.Trim());
    }
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.12.2014, 13:23
Ответы с готовыми решениями:

Задача 1, 10, 100, 1000
Представим себе бесконечную последовательность цифр, составленную из записанных друг за другом возрастающих степеней десятки. Вот начало...

Олимпиадная задача с тимуса №1209
Ограничение времени: 1.0 секунды Ограничение памяти: 64 МБ Представим себе бесконечную последовательность цифр, составленную из...

Задача Timus
Почему не проходит тест? Может кто знает? http://acm.timus.ru/problem.aspx?space=1&amp;num=1001 #include &lt;vector&gt; int...

9
871 / 721 / 304
Регистрация: 15.04.2013
Сообщений: 2,047
Записей в блоге: 5
17.12.2014, 13:32
pav1uxa,
Все дело в алгоритме, попробуйте решить при помощи треугольных чисел
0
Неадекват
 Аватар для freeba
1501 / 1237 / 248
Регистрация: 02.04.2010
Сообщений: 2,807
17.12.2014, 16:24
Лучший ответ Сообщение было отмечено pav1uxa как решение

Решение

C#
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication26
{
    class Program
    {
        static void Main(string[] args)
        {
            var indexes = Console.In.ReadToEnd().Split(new char[] { ' ', '\t', '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries).Skip(1).Select(x => int.Parse(x)).ToArray();
            var listOne = new SortedSet<int>();
            var counter = 1;
 
            listOne.Add(1);
            listOne.Add(2);
 
            var old = 2;
            for (int i = 0; i < 65535; i++)
            {
                old += ++counter;
                listOne.Add(old);
            }
 
            var result = new StringBuilder();
 
            foreach (var item in indexes)
            {
                result.Append(listOne.Contains(item) == true ? "1 " : "0 ");
            }
 
            Console.WriteLine(result);
        }
    }
}
1
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
17.12.2014, 20:11  [ТС]
freeba, волшебство... Спасибо.
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
17.12.2014, 21:01
Ссылка в первом посте, похоже, битая.
http://acm.timus.ru/problem.aspx?space=1&num=1209

C#
1
2
3
4
5
6
7
int n = int.Parse(Console.ReadLine());
while (n --> 0)
{
   int k = int.Parse(Console.ReadLine());
   double x = (Math.Sqrt(8 * k - 7) - 1) / 2;
   Console.Write(x % 1 == 0 ? "1 " : "0 ");
}
0
foo();
 Аватар для rattrapper
886 / 587 / 222
Регистрация: 03.07.2013
Сообщений: 1,549
Записей в блоге: 2
17.12.2014, 21:15
Цитата Сообщение от kolorotur Посмотреть сообщение
Ссылка в первом посте, похоже, битая.
Ваша ссылка тоже не сработала, думаю какой-то баг на сайте

Добавлено через 3 минуты

Не по теме:

Цитата Сообщение от kolorotur Посмотреть сообщение
n --> 0
kolorotur, думаю, Вы в теме, но все же: What is the name of the “-->” operator?

0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
17.12.2014, 21:28
Цитата Сообщение от rattrapper Посмотреть сообщение
Ваша ссылка тоже не сработала, думаю какой-то баг на сайте
Ага, заменяет & на &amp;
Было:
Code
1
http://acm.timus.ru/problem.aspx?space=1&num=1209
Стало:
Code
1
http://acm.timus.ru/problem.aspx?space=1&amp;num=1209
Цитата Сообщение от rattrapper Посмотреть сообщение
What is the name of the “-->” operator?
Бгы
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
18.12.2014, 06:06  [ТС]
kolorotur, не вижу принципиального отличия от моего алгоритма и, ожидаемо, также приводит к time limit exceeded.

Не по теме:

Хотя там если обсуждения посмотреть, все именно этим алгоритмом и решают... И еще я заметил что там время работы c# программ всегда на порядок выше чем c++. Может с этим связано. Время выполнения некоторых c++ программ там доходит аж до 0.015 сек, в то время как на c# меньше 0.156 нету.

p.s. у меня ссылка, не смотря на свою "битость", даже с телефона нормально открывается) с компьютера тоже открывается. на хроме.

p.p.s. на всякий случай, если что, ответ уже дан.

0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
18.12.2014, 10:32
Цитата Сообщение от pav1uxa Посмотреть сообщение
не вижу принципиального отличия от моего алгоритма
Принципиальное отличие в считывании и выводе на консоль результатов.

Цитата Сообщение от pav1uxa Посмотреть сообщение
также приводит к time limit exceeded.
Странно, когда заливал пару лет назад, прошло сразу с результатом где-то 100-200мс.
Может, я в StringBuilder сначала все заливал... попробуйте:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
        static void Main()
        {
            ushort n = ushort.Parse(Console.ReadLine());
            var sb = new StringBuilder(n * 2);
            while (n-- > 0){
                int k = Convert.ToInt32(Console.ReadLine());
                sb.Append((Root(k - 1) % 1 == 0) ? '1' : '0').Append(' ');
            }
            Console.WriteLine(sb);
        }
 
        static double Root(double value)
        {
            return (Math.Sqrt(1 + 8 * value) - 1) / 2;
        }
0
Неадекват
 Аватар для freeba
1501 / 1237 / 248
Регистрация: 02.04.2010
Сообщений: 2,807
18.12.2014, 12:17
Цитата Сообщение от pav1uxa Посмотреть сообщение
Время выполнения некоторых c++ программ там доходит аж до 0.015 сек,
В c++ большую часть задач можно решить на этапе компиляции - эдакий хак для истинных военов двух крестов.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.12.2014, 12:17
Помогаю со студенческими работами здесь

Задача с acm.timus.ru
Помогите найти ошибку либо предложите свой алгоритм решения Условие Мой код uses SysUtils; var ch:char; ...

Задача с acm.timus.ru
Помогите решить задачу Условие Мой код var s:string; k:integer; c:char;

Задача с acm.timus.ru
Помогите найти решение или алгоритм к задаче. Условие.

Алгоритм к задаче Пингвин-Авиа с acm.timus.ru
Предложите Пожалуйста алгоритм к задаче Пингвин-Авиа Имя входного файла: input.txt Имя выходного файла: output.txt Авиакомпания...

Вывод в Excel значения в пределах от 100 до 1000 с шагом 100 в столбец
Написать VBS-скрипт, выводящий в Excel значения в пределах от 100 до 1000 с шагом 100 в столбец. Вот пока до чего додумался, но это...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru