+116
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 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
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
namespace tickets
{
class ticket
{
int ticket_num; // номер билета
int[] digit_mas = new int[6]; // массив циф номера билета
int i = 5;
bool repletion; // если значение превысило 999999 - то истина
int divizor = 10; // делитель (для розбивания числа на цифры)
int pre_divizor = 1; // предидущий делитель
int pre_digit; // предидущая цифра
int happy_TK_amount; // количество "счастливых" билетов
public ticket(int num_of_ticket)
{
if (num_of_ticket < 1000000 & num_of_ticket >= 100000)
ticket_num = num_of_ticket;
else
Console.WriteLine("out of range");
}
public void crash_num() // разбиваем число на цифры
{
if (i >= 0)
{
digit_mas[i] = (ticket_num % divizor - pre_digit) / pre_divizor; // от остачи от деления на порядок , вычетаем предидущю цифру , и делим на предидущий порядок - получаем цифру определённого порядка числа
pre_divizor = divizor;
pre_digit = digit_mas[i];
divizor = divizor * 10;
i--; // пишем в обратном порядке , для правильной записи последовательности цифер
crash_num();
}
}
public void echo_digits()
{
for (i = 0; i <= 5; i++)
{
Console.Write(digit_mas[i]);
}
}
public void happy_ticket() // щитает количество "счастливых" билетов
{
for (repletion = false; repletion != true; )
{
if (digit_mas[0] + digit_mas[1] + digit_mas[2] == digit_mas[3] + digit_mas[4] + digit_mas[5]) // проверяет билет на предмет "счастливости"
{
happy_TK_amount++;
}
i = 5;
num_increase();
}
Console.WriteLine("there are " + happy_TK_amount + " happy tickets");
}
public void num_increase() // увеличивает номер билета на 1
{
if (i >= 0)
{
digit_mas[i]++;
if (digit_mas[i] == 10)
{
digit_mas[i] = 0;
if (digit_mas[0] == 0)
repletion = true;
else
i--; // уменшаем индекс , для движения от младшего - к старшему разряду
num_increase();
}
}
}
}
Написать программу определения количества шестизначных 'счастливых' билетов, у которых сумма первых 3 десятичных цифр равна сумме 3 последних десятичных цифр.
подскажите плз , есть ли (естественно есть) , где и какое у меня какашкэ в коде , а то проверять меня некому , а индусом стать не хочу
ЗЫ а вообше , здесь можно так делать (просить проверить )
Запостил: WJIRIIA,
16 Января 2011
WJIRIIA 16.01.2011 14:40 # −2
из мейн :
ticket TCK = new ticket(001001);
TCK.crash_num();
TCK.happy_ticket();
Console.ReadLine();
Lure Of Chaos 16.01.2011 15:35 # 0
рука тянется к минусу, ибо
> а вообше , здесь можно так делать (просить проверить )
нужно соображать самому, в чем говно. Форумов, где можно спросить, и без нас предостаточно
зы. Просьба Страйко сделать намёк об этом в эпиграфе сайта
guest 16.01.2011 15:39 # +1
WJIRIIA:
Плюсуют, значит говно есть.
Lure Of Chaos 16.01.2011 15:43 # −1
guest 16.01.2011 15:47 # −2
4)Функция доставила. :D 2) лучше записать ввиде 3)При проверки на диапазон лучше использовать исключения в конструкторе.
WJIRIIA 16.01.2011 15:50 # −1
4 не совсем понял ...
ну можно например увеличивать ticket_num на 1 , а потом о5 розбивать ?
зачем лишние телодвижения ?
guest 16.01.2011 15:50 # 0
absolut 17.01.2011 09:43 # 0
> одна_строчка();
А потом станет
for(...)
первая_строчка();
вторая_строчка();
и будет весело.
guest 17.01.2011 10:50 # −1
>и будет весело.
Вы не любите веселиться? Оче6нь зря. :D
absolut 17.01.2011 14:04 # 0
guest 17.01.2011 14:41 # −1
Это Ваше право, но на мой взгляд это лишь портит восприятие (и стилистику).
Похоже это чисто субъективная особенность восприятия каждого человека. Значит не мой способ, не ваш - нельзя советовать другим.
Правда, у моего способа есть незначительное оправдание: меньше писать (экономия времени).
Вообщем, это не важно. Не вижу смысла продолжать обсуждение.
gegMOPO4 17.01.2011 20:47 # 0
guest 17.01.2011 22:56 # −1
NotLinoleum 16.01.2011 15:54 # +5
.Select(i => String.Format("{0:d6}", i))
.Where(i => i[0] + i[1] + i[2] == i[3] + i[4] + i[5])
.Count();
WJIRIIA 16.01.2011 16:17 # −2
сорь , если я не прав , а это не насилие ?
разве это дело не будет "думать" в разы дольше "ужасного" num_increase() ?
guest 16.01.2011 16:20 # 0
А если задача меньше думать, написать за 5 минут и уйти с лабы в столовку с 5кой, то код NotLinoleum самое оно.
NotLinoleum 16.01.2011 16:27 # 0
WJIRIIA 16.01.2011 16:49 # 0
guest 16.01.2011 16:09 # 0
bugmenot 16.01.2011 16:38 # 0
PS: формула в первой главе учебника
gegMOPO4 16.01.2011 19:44 # +2
Говна там хватает, даже смотреть не буду. Начиная с использования класса (обратите внимание, локальные переменные ещё не проходили).
dwinner 17.01.2011 12:14 # 0
bugmenot 17.01.2011 23:23 # +1
> очень хорошо
I LOLD
Lure Of Chaos 18.01.2011 12:36 # 0
dmz 27.01.2011 00:32 # 0
bugmenot 27.01.2011 01:49 # −1
dmz 27.01.2011 03:09 # 0
Торжественный обмен сарказмом состоялся.
Есть претензии к коду по существу? Сразу говорю, что сделано "на коленке", ибо комбинаторику не помню.
bugmenot 28.01.2011 05:48 # 0
это был не сарказм, а намёк, кстати
то не вылезают из педивикии, то не загонишь, блин...
dmz 28.01.2011 12:02 # 0
bugmenot 28.01.2011 12:37 # 0
http://en.wikipedia.org/wiki/RTFM?
спойлер: а в соседней статье рассматриваются пермутации
dmz 28.01.2011 02:36 # −2
Реализация на python:
Результаты работы:
4: 669
6: 55251
8: 4816029
10: 432457639
12: 39581170419
14: 3671331273479
16: 343900019857309
18: 32458256583753951
20: 3081918923741896839
22: 294056694657804067999
24: 28170312778225750242099
26: 2707859169387181467852099
28: 261046730157780861858821135
30: 25228791861003454642059261391
32: 2443553412892220489195278947229
34: 237126779700111728623210793896699
36: 23050391247812238203687824747157799
38: 2244066255357188250744344225634235599
40: 218768894829904122626725603838896148679
42: 2135357526350288463038827371419714518259 9
44: 2086610157206763614866736016835099941514 799
46: 2041055591672347180981968644197833025496 32799
48: 1998359874208731005735781531187223671517 1970099
50: 1958235988893910037740658552689739094876 481545139
guest 06.04.2011 05:18 # +1
guest 14.08.2012 01:32 # 0
var tt1 = from t1 in numbers
from t2 in numbers
from t3 in numbers
let sum = t1 + t2 + t3
group sum by new { k = t1 * 100 + t2 * 10 + t3, s = sum }
into gr
select gr;
var tt2 = from l1 in tt1
join l2 in tt1 on l1.Key.s equals l2.Key.s
select l1.Key.k * 1000 + l2.Key.k;