2014-10-01 2 views
-4

В основном я попытался ответить на этот вопрос от Kattis: https://open.kattis.com/problems/mixedfractionsМожно ли сделать Kattis «смешанные фракции Q» в С и под 2 вторым пределом

У меня есть рабочее решение, однако оно переходит выделенному 2-секундному временному пределу для вычисления. Мой вопрос по существу, возможно ли даже написать решение этой проблемы на языке программирования C, который может вычислить максимальный вход менее чем за 2 секунды.

При чтении других статистических «проблем/смешанных фракций/статистики» я заметил, что никто не использовал C или подобные процедурные языки. Обратная связь просто говорит, что она прошла через ограничение по времени, но я не уверен, что это потому, что C не может сделать расчет достаточно быстро или если я допустил ошибку в своем коде.

Благодарим за помощь, я закрою свой код ниже для справки!

http://pastebin.com/7EtA2d3S

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

+0

Оба ваши ссылки сломаны – djv

+2

Ваш вопрос, безусловно, слишком расплывчатый. В этом случае мы ожидаем, что вы дадите краткий обзор своей проблемы самостоятельно. Не ссылайтесь на свой код как на ссылки. Дело в том, что ваш код просто плох. Посмотрите, как работают операции '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''. Голосование закрывается. –

+0

(портирование ответа на комментарий): Ваш вопрос немного ограничен - прочитав проблему «смешанных фракций», я уверен, что да, программа на C может быть написана для вычисления ответа на любую ценность в проблемной области менее чем за 2 секунды. Как отмечает Йенс, ваш алгоритм является проблемой здесь. Подход с разделением и модулем будет намного быстрее. – mwigdahl

ответ

1

Я не могу себе представить, как удаленно удаленный код мог превышать 2 секунды во время выполнения трех выбранных образцов.

версия Я просто залетела бежит так быстро, что не регистрируется в любое время на все:

#include <stdio.h> 

int main(int argc, char *argv[]) 
{ 
    while (1) { 
     unsigned int  a, b; 
     unsigned int  c, d, e; 

     scanf("%u %u", &a, &b); 
     if (a == 0 && b == 0) break; 

     c = a/b; 
     d = a % b; 
     e = b; 

     printf("%u %u/%u\n", c, d, e); 
    } 
} 

Продолжительность:

% /usr/bin/time ./mixed <data.in> data.out 
    0.00 real   0.00 user   0.00 sys 

EDIT Ах, я вижу, - Kattis имеет свой собственной среды выполнения, и предоставляет большие наборы данных, чем образец, показанный на странице. Мое время на Каттисе было 0.04s - не фантастическое, но и не ужасное. Использование функции div(n, d), которая вычисляет остаток и коэффициент за один шаг, выполняется быстрее.

 Смежные вопросы

  • Нет связанных вопросов^_^