2012-02-18 3 views
4

Я представлял код степени выраженности матрицы на языке C для поиска n-й фибоначчи, и я использовал длинную длинную переменную int для хранения ответа по модулю 10000007 n-й фибоначчи, и судья давал «превышение лимита времени», но когда я использовал «unsigned long long int», мой код был принят за это время и время выполнения было сокращено.unsigned long long int

Я был не в состоянии понять, почему long long int дал «предел времени превышен» и «unsigned long long int» был принят? (Ответы на крайних случаях тест прибывали правильно в обоих случаях)

+0

И у вас есть полная уверенность в том, что архитектура на машине судьи такая же, как ваша? –

+9

http://stackoverflow.com/questions/4712315/performance-of-unsigned-vs-signed-integers –

+0

Какая архитектура вы использовали? – jmq

ответ

5

Для того, чтобы не повторить усилия никому, пожалуйста, см this question и это more advanced question and answers той же теме. Ответ dthorpe в this one также очень подробный. wheaties 'первый комментарий here стоит проверить как первое испытание.

+0

есть накладные расходы, когда мы используем unsigned при смешивании с удвоениями, но мой код имеет дело с умножением, а «unsigned int» работает быстрее, чем «int», и да, теперь я также могу проверить на умножение, сравнивая код сборки для обоих типов умножений ... :) –

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