Задачки для разминки. (Простенькие такие...)

Модератор: Модераторы разделов

Аватара пользователя
stomp
Сообщения: 721
ОС: Debian GNU

Re: Задачки для разминки.

Сообщение stomp »

Здравствуйте. Есть вот такая задачка:
Написать программу на С пораждающая в цикле следующюю таблицу значений:
A A+2 A+4 A+6
3 5 7 9
6 8 10 12
9 11 13 15
12 14 16 18
15 17 19 21
Конечно ж это можно написать так:

Код: Выделить всё

#include <stdio.h>

 main()
    {
         int a=3,i=1;
         printf("A\tA+2\tA+4\tA+6\n");
         while (i++ <= 5) {
                 printf("%d\t%d\t%d\t%d\n", a,a+2,a+4,a+6);
                 a=a+3;

         }
 printf("\n");
 return 0;
}



но а если может случиться что A+n, тогда как?
Попытался написать вот так:

Код: Выделить всё

#include <stdio.h>
main ()
    {
         int a=3,i=1,k=0,s=1,p,f=0;

 printf("A\tA+2\tA+4\tA+6\n");

 while ( i++ <=5){
  a=f+3;
         while (s++ <=4) {
                  p = a+k;
                  printf("%d\t",p);
                  k=k+2;

                        }
 f=a;
 }

 printf("\n");

return 0;

выводит только
3 5 7 9.
Как можно это реализовать используя только цикл из while?
Изучаю С самостоятельно поэтому прошу не судить строго
Спасибо сказали:

Аватара пользователя
stomp
Сообщения: 721
ОС: Debian GNU

Re: Задачки для разминки.

Сообщение stomp »

Как можно это реализовать используя только цикл из while?

Вот так решилась данная задачка. :)

Код: Выделить всё

#include <stdio.h>
main()
{
    int a = 3, n = 12, i, j;

    i = 0;
    while(i <= n) {
        i == 0 ? printf("A\t") : printf("A+%d\t", i);
        i += 2;
    }
    printf("\n");

    j = 0;
    while(j < 5) {
        i = 0;
        while(i <= n) {
            printf("%d\t", a+i);
            i += 2;
        }
        j++;
        a += 3;
        printf("\n");
    }
    return 0;
}
Спасибо сказали:

Аватара пользователя
frp
Сообщения: 1445
ОС: Debian Squeeze

Re: Задачки для разминки.

Сообщение frp »

Насчет сложения чисел до 10**20 (даже до 10**200) сделаю без проблем на C++ и потом выложу.
Спасибо сказали:

Аватара пользователя
NARKOZ
Сообщения: 31
ОС: Fedora 14 / CentOS 5.5

Re: Задачки для разминки.

Сообщение NARKOZ »

Код: Выделить всё

int x, y;
x = 1;
y = 2;

x = x^y;
y = x^y;
x = x^y;


Поясните отчего результат:

x= 3
y= 2

x= 3
y= 1

x= 2
y= 1


Ведь, это возведение степень? :unsure:
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)

-----END PGP SIGNATURE-----
Спасибо сказали:

Аватара пользователя
Cra3y
Сообщения: 80
ОС: Debian

Re: Задачки для разминки.

Сообщение Cra3y »

Ведь, это возведение степень?
Почти )
Это побитный XOR aka "исключающее ИЛИ"
HP G62 (AMD Phenom II x3 1.8GHz 4GB DDR3 Ram) / Debian 8 amd64
Спасибо сказали:

Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Задачки для разминки.

Сообщение drBatty »

NARKOZ писал(а):
09.06.2009 07:28
Поясните отчего результат:

Код: Выделить всё

x y |x^y
0 0 |0
0 1 |1
1 0 |1
1 1 |0

для остальных чисел - переведите в двоичную систему, по таблице, и потом обратно в десятичную.

ЗЫЖ очень полезная операция
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:

Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Задачки для разминки.

Сообщение t.t »

Почему-то только сейчас увидел эти ответы. Впрочем, лучше поздно, чем никогда. (:

drBatty писал(а):
01.11.2008 04:02
t.t писал(а):
10.10.2008 17:19
Пример? Не думаю. На тех архитектурах, где xchg нет, что-то короче, чем
Код
xor x, y
xor y, x
xor x, y
(т.е. то самое x^=y; y^=x; x^=y; если на Си) не придумаешь.
Вы слишком категоричны. дело в том, что при операции xchg eax,ebx процессор вовсе не переносит куда-то 32 бита, потом копирует... потом ещё раз копирует... Нет. просто eax становится ebx, а ebx - eax. Вот и всё. Потому так быстро и просто. В действительности ваши x,y видимо соседние переменные в большом массиве локального стека, которые я могу считать stack[base+1], stack[base+2]. Ну а как из 1 сделать 2, а из двух 1 за одно примитивное действие я уже показал в прошлом посте ;)
drBatty писал(а):
01.11.2008 17:06
Portnov писал(а):
01.11.2008 15:09
Например, 80286 не умел просто xchg. Он умел только lock xchg
умел. 8086 тоже умел. но только если оба аргумента - регистры.

ЗЫЖ вы про xchg [memory], reg
а я про xchg reg1, reg2
в вашем случае действительно нужна была блокировка, так-как операция не атомарная(на древних CPU). в любом случае, замена операций перестановки на адресную арифметику часто даёт выигрыш по быстродействию.
Вы меня неверно поняли. Я говорил о том, что вариант с исключающим или не просто самый короткий, а самый короткий из наиболее универсальных. Во-первых, Вы забываете о наличии других архитектур, кроме x86. Далеко не на всех вообще есть операция, аналогичная xchg (xor, насколько я помню, есть всегда). Во-вторых, как операнды, так и их адреса вовсе не обязаны храниться в регистрах (равно как и адреса не обязаны быть соседними). Алгоритм xor-swap -- это классика; и вызвано это именно тем, что в большинстве случаев (т.е. когда операции обмена нет либо она далеко не атомарна) он оптимален.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:

Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Задачки для разминки.

Сообщение t.t »

Portnov писал(а):
18.12.2008 14:18
watashiwa_daredeska писал(а):
18.12.2008 11:05
еще одна задачка из той же серии - разложение числа на множители.
Это сильно не на разминку задача - это, как минимум, NP-полная проблема...
Отчего же? Как для размнки, тут совершенно незачем вообще искать простые числа -- они "найдутся" сами. И ведь за всё это время никто не догадался. (:

Код: Выделить всё

for (i=2; n > 1; i++) {
  for (p=0; n%i == 0; p++)
    n/=i;
  if (p)
    printf("%d^%d*", i, p);
}
printf("\b \n");

Набросал за пять минут без проверки, так что по мелочи мог ошибиться. Но принцип ясен.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:

Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Задачки для разминки.

Сообщение drBatty »

t.t писал(а):
01.10.2009 08:32
Алгоритм xor-swap -- это классика; и вызвано это именно тем, что в большинстве случаев (т.е. когда операции обмена нет либо она далеко не атомарна) он оптимален.
Безусловно классика. И безусловно об этом надо знать. Но, ИМХО, обычно это не самый оптимальный вариант.

Код: Выделить всё

xor x, y
xor y, x
xor x, y

тут 6 чтений и 3 записи. Причём во многих архитектурах (где только один аккумулятор) будут сложности со второй строкой (например в x86).

Код: Выделить всё

mov tmp, x
mov x,y
mov y,tmp

тут чтений всего 3, к тому-же, на супер-скалярных CPU, вроде наших, мы можем это спарить с чем-то ещё, а вот ваша конструкция спарится хуже, т.к. вы используете ALU.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:

Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Задачки для разминки.

Сообщение t.t »

drBatty писал(а):
01.10.2009 09:39
t.t писал(а):
01.10.2009 08:32
Алгоритм xor-swap -- это классика; и вызвано это именно тем, что в большинстве случаев (т.е. когда операции обмена нет либо она далеко не атомарна) он оптимален.
Безусловно классика. И безусловно об этом надо знать. Но, ИМХО, обычно это не самый оптимальный вариант.

Код: Выделить всё

xor x, y
xor y, x
xor x, y

тут 6 чтений и 3 записи. Причём во многих архитектурах (где только один аккумулятор) будут сложности со второй строкой (например в x86).

Код: Выделить всё

mov tmp, x
mov x,y
mov y,tmp

тут чтений всего 3, к тому-же, на супер-скалярных CPU, вроде наших, мы можем это спарить с чем-то ещё, а вот ваша конструкция спарится хуже, т.к. вы используете ALU.
Но этот вариант не удовлетворяет условиям задачи: не использовать внешних переменных. (:

А на практике, конечно, у каждого из вариантов есть свои пллюсы и свои минусы; т.е. для каждого найдутся условия (архитектура, задача, ограничения по использованию памяти и т.д.), где он будет оптимальным.

P.S. Понял свою ошибку: я как обычно был излишне категоричен -- не стоило использовать выражение "в большинстве случаев"; корректнее "во многих".
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:

Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Задачки для разминки.

Сообщение drBatty »

t.t писал(а):
01.10.2009 10:07
Но этот вариант не удовлетворяет условиям задачи: не использовать внешних переменных. (:

я помню... Но это условие надуманное ИМХО.
t.t писал(а):
01.10.2009 10:07
P.S. Понял свою ошибку: я как обычно был излишне категоричен -- не стоило использовать выражение "в большинстве случаев"; корректнее "во многих".

я тоже :)
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:

Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Задачки для разминки.

Сообщение t.t »

drBatty писал(а):
01.10.2009 12:37
t.t писал(а):
01.10.2009 10:07
Но этот вариант не удовлетворяет условиям задачи: не использовать внешних переменных. (:
я помню... Но это условие надуманное ИМХО.
Не совсем. Бывают ситуации, когда даже одна лишняя переменная это слишком дорого. В частности, бывают ситуации, когда при написании подпрограммы ты даже _не знаешь_, есть ли у тебя хоть один байт свободной памяти в момент её вызова. Также бывают ситуации, когда элементарно удобнее не быть заранее завязанным на выделение этого байта (или слова) при проектировании всех тех мест, откуда подпрограмма может быть вызвана. Понятно, что на нынешних x86-системах такие ситуации малореальны, но есть ведь и в наше время архитектуры, гораздо сильнее ограниченные по ресурсам.

А вообще дело в том, что вариант со временной переменной -- самый очевидный. Т.е. эта задачка скорее на гибкость мышления. (; Достаточно важное качество для программиста.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:

Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Задачки для разминки.

Сообщение drBatty »

t.t писал(а):
01.10.2009 20:36
но есть ведь и в наше время архитектуры, гораздо сильнее ограниченные по ресурсам.

опасно там писать везде по вашему: там и ресурсы по времени сильно ограниченны, а ваше решение очень медленное. к тому-же оно обычно длиннее - значит и памяти больше жрёт, к тому-же, там наверное нет кучи аккумуляторов, значит придётся юзать временные переменные... В целом конечно согласен: везде надо думать, а не бездумно применять известные схемы, и вашу в т.ч. ;)

Кстати, а была задачка:
Как сделать байт из двух байтов, причём все чётные биты из первого байта, а нечётные из второго?
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:

Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Задачки для разминки.

Сообщение t.t »

drBatty писал(а):
09.10.2009 17:23
Кстати, а была задачка:
Как сделать байт из двух байтов, причём все чётные биты из первого байта, а нечётные из второго?
Может быть, какие-то дополнительные ограничения должны быть? А то без них что же это за задачка?..

Код: Выделить всё

(b1 & 85) | (b2 & 170)
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:

Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Задачки для разминки.

Сообщение drBatty »

t.t писал(а):
14.10.2009 16:02
Может быть, какие-то дополнительные ограничения должны быть? А то без них что же это за задачка?..

ага. зачот. а покороче можно? а то у вас дополнительная переменная нужна:

Код: Выделить всё

tmp = b1 & 85;
y = b2 & 170;
y |= tmp;

к тому-же, можно-ли с одной константой?
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:

Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Задачки для разминки.

Сообщение t.t »

drBatty писал(а):
14.10.2009 16:16
t.t писал(а):
14.10.2009 16:02
Может быть, какие-то дополнительные ограничения должны быть? А то без них что же это за задачка?..
ага. зачот. а покороче можно? а то у вас дополнительная переменная нужна
Т.е. такое же условие: не использовать дополнительной памяти? Да, так уже интереснее.

drBatty писал(а):
14.10.2009 16:16
к тому-же, можно-ли с одной константой?
Ну, в моём варианте разница не велика (:

Код: Выделить всё

((w%256) & 85) | ((w>>8) | 170)
Чтобы чисто логическими операциями, можно остаток от деления заменить на (w << 8) >> 8. По-моему, даже быстрее чуток будет (хотя точно не помню, везде ли).

Без дополнительной памяти тоже, думаю, разница не принципиальна.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:

Аватара пользователя
Alex2ndr
Сообщения: 443
ОС: Debian Lenny

Re: Задачки для разминки.

Сообщение Alex2ndr »

кодировщик писал(а):
17.12.2008 10:32
Самый простой алгоритм вывести число наоборот, т.е. из 12345 получить 54321 :blush:
Какие у кого будут предложения?!

Интересно а задание подразумевает конкретный ЯП?
В питоне например это делается в 1 строку

Код: Выделить всё

>>> int(str(12345)[::-1])
54321
Спасибо сказали:

Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Задачки для разминки.

Сообщение drBatty »

t.t писал(а):
16.10.2009 12:11
Без дополнительной памяти тоже, думаю, разница не принципиальна.

вот решение:

Код: Выделить всё

x = x ^ y
x &= MASK
x = x ^ y

если MASK == 1, то команды x = x ^ y не меняют x, а если MASK == 0, тогда в x пишется y. Конечно в MASK не один бит а много, потому часть данных идёт из x, а часть из y.

В i8080 это занимает 3 команды, или 4 байта:
xor ax, cx
and ax, MASK
xor ax, cx
вроде так...

Самый простой алгоритм вывести число наоборот, т.е. из 12345 получить 54321 blush.gif
Какие у кого будут предложения?!

самый ПРОСТОЙ?

void revers(const char *s)
{
if(!*s) return;
revers(s + 1);
putchar(*s);
}
примерно так...
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:

Аватара пользователя
Subj
Сообщения: 151
Статус: Useful
ОС: win

Re: Задачки для разминки.

Сообщение Subj »

Самый простой алгоритм вывести число наоборот, т.е. из 12345 получить 54321 blush.gif
Какие у кого будут предложения?!


Хм, задача вроде как не предполагает тупо преобразовать число в строку и зареверсить.
Как вариант разложить сначала число на цифры и ссумировать их. Далее пробегаемся по цифрам числа и из общей суммы вычитаем сумму цифр за исключением текущей цифры. Вот както так :)
Building better software with Ada
Спасибо сказали:

Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Задачки для разминки.

Сообщение drBatty »

Subj писал(а):
30.10.2009 13:35
Хм, задача вроде как не предполагает тупо преобразовать число в строку и зареверсить.

а где сказано, что числа представлены в виде целых-двоичных? может это двоично-десятичные, либо символьные строки.
Subj писал(а):
30.10.2009 13:35
Как вариант разложить сначала число на цифры и ссумировать их.

ага. и разница?
реверснуть двоичное число без преобразования никак не получится. (ну разве что как двоичное, а по условию - как десятичное).
drBatty писал(а):
21.10.2009 21:39
В i8080 это занимает 3 команды, или 4 байта:

очепятался, i8086, в 8080 это
XOR C
AND MASK
XOR C
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:

JelF
Сообщения: 62
ОС: Debian

Re: Задачки для разминки.

Сообщение JelF »

дайте головоломистую задачку на динамику плз.
Спасибо сказали:

Аватара пользователя
Subj
Сообщения: 151
Статус: Useful
ОС: win

Re: Задачки для разминки.

Сообщение Subj »

Подсчитать количество счастливых билетов (подразумевать что нумерация 000_000 .. 999_999) где сумма первых трех цифр равна сумме трех последних. Желательно не 6-тью вложенными друг в друга циклами :) (например вывести для начала какую-нить интегральную функцию 0-27 :D )
Building better software with Ada
Спасибо сказали:

Аватара пользователя
/dev/random
Администратор
Сообщения: 5102
ОС: Gentoo

Re: Задачки для разминки.

Сообщение /dev/random »

Subj писал(а):
08.12.2009 16:22
Подсчитать количество счастливых билетов (подразумевать что нумерация 000_000 .. 999_999) где сумма первых трех цифр равна сумме трех последних. Желательно не 6-тью вложенными друг в друга циклами :) (например вывести для начала какую-нить интегральную функцию 0-27 :D )


#!/bin/sh
echo 55252

:crazy:
Спасибо сказали:

Аватара пользователя
Subj
Сообщения: 151
Статус: Useful
ОС: win

Re: Задачки для разминки.

Сообщение Subj »

Тогда вот такая задачка

Есть некий текст на входе (размер неограничен). Необходимо его отредактировать по аналогии с примером:
Было:
Какой же Новый год без ёлки? Пушистая, нарядная и яркая ёлочка – незаменимый атрибут праздничного настроения и новогоднего веселья.


Должно стать както вот так:
Какой же Новый год
без ёлки? Пушистая, нарядная
и яркая ёлочка – незаменимый атрибут
праздничного настроения и новогоднего веселья.


Ну в общем расставить переносы строк в тексте так, чтобы каждая последующая строка была равна или больше по длине предыдущей (слова не дробить, пробелы и знаки препинания также учитываются при подсчете длины строки).
Если два разных алгоритма разобьют один и тот же текст по разному - то выигрывает тот алгоритм, который выдаст большее количество строк ;)
(хотя можно еще ввести какойнить показатель на основе того, насколько равномерно распределены значения длин каждой строки, эдакая "гладкость" :D )
Building better software with Ada
Спасибо сказали:

Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable

Re: Задачки для разминки.

Сообщение Portnov »

Между прочим, вот ещё пара задачек "для разминки": http://fprog.ru/contests/2009/ :)
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали:

Аватара пользователя
frp
Сообщения: 1445
ОС: Debian Squeeze

Re: Задачки для разминки.

Сообщение frp »

Простая задачка: найдите количество корней уравнения ax^2+bx+c=0. Ораничения: дано числа a,b,c которые влезают в double. Дискриминант тоже обязательно влезает в double.

Выводить результат на консоль в любом понятном формате (можно словами в utf-8, но для обычных чисел все-таки предпочтительнее выводить их нормальным способом.)

Выложите здесь исходник.
И не стоит говорить что это простая задача... Даже если вы ее делали вместо hello world. Всеравно выложите.

Намек. Про utf8 я не по приколу написал :)
Спасибо сказали:

Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux

Re: Задачки для разминки.

Сообщение eddy »

frp писал(а):
19.03.2010 09:38
Простая задачка: найдите количество корней уравнения ax^2+bx+c=0.

Код: Выделить всё

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv){
    if(argc != 4){
        printf("\nИспользование: %s a b c\n\tгде ax^2 + bx + c = 0\n\n", argv[0]);
        exit(1);
    }
    double a = atoi(argv[1]), b = atoi(argv[2]), c = atoi(argv[3]);
    double D = b*b - 4*a*c;
    if(D > 0) printf("\nДва разных действительных корня\n");
    else if (D == 0) printf("\nДва совпадающих действительных корня\n");
    else printf("\nДва комплексных корня\n");
}

Проверка:

Код: Выделить всё

[19.03 09:51 /tmp]
./a.out 1 -2 1

Два совпадающих действительных корня
[19.03 09:51 /tmp]
./a.out 2 -2 1

Два комплексных корня
[19.03 09:51 /tmp]
./a.out 2 -2 -6

Два разных действительных корня
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали:

Аватара пользователя
Crazy
Сообщения: 862
Статус: Адепт Дзен.
ОС: Mint, Win7.

Re: Задачки для разминки.

Сообщение Crazy »

frp писал(а):
19.03.2010 09:38
Простая задачка: найдите количество корней уравнения ax^2+bx+c=0. Ораничения: дано числа a,b,c которые влезают в double. Дискриминант тоже обязательно влезает в double.

Выводить результат на консоль в любом понятном формате (можно словами в utf-8, но для обычных чисел все-таки предпочтительнее выводить их нормальным способом.)

Выложите здесь исходник.
И не стоит говорить что это простая задача... Даже если вы ее делали вместо hello world. Всеравно выложите.

Намек. Про utf8 я не по приколу написал :)

Учим основную теорему алгебры, полином степени n имеет не более n корней.

Desipere in loco
Спасибо сказали:

Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux

Re: Задачки для разминки.

Сообщение eddy »

Crazy писал(а):
19.03.2010 11:48
полином степени n имеет не более n корней

Ага, поэтому мое решение и пишет все время "два корня", уточняя только, какие: действительные или комплексные, и совпадают ли они.
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали:

Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Задачки для разминки.

Сообщение drBatty »

Crazy писал(а):
19.03.2010 11:48
Учим основную теорему алгебры, полином степени n имеет не более n корней.

ага. подучите.
РОВНО n корней!
в данном случае всегда 2шт.

А решение простое
b*b - 4*a*c
и проверяем знак - 3 случая получается. В чём сложность?

eddy
ну ещё и сами корни посчитать, и пятёрка в контрольной у семиклассника обеспечена ;)
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали: