Форум » Кодирование и декодирование информации » 8 зад 193 » Ответить

8 зад 193

elen_sewer: Задача: Сколько существует четных пятеричных чисел длиной 6, начинающихся с цифры 3? Решение: 1*5*5*5*5*3=1875 Что не так? Почему 1562?

Ответов - 8

romad: не мое решение, а Евгения Джобса Всего пятеричных чисел длиной 6 и начинающихся с «3»: 1*5*5*5*5*5 = 55 =3125 Из них нечетных 1563 и четных 1562. Нечетных больше, т.к. первое и последнее пятеричное числа нечетные: 300000 и 344444. примечание: число в системе счисления с нечетным основанием будет нечетным, если сумма разрядных единиц нечетная; четным – если сумма четная. Поэтому ответ: 1562 Можно решить на Питоне: k = 0 for x in range(3*(5**5),4*(5**5)+1): if x %2 == 0: k += 1 print(k)

teru: [pre2] def f(x): summ = 0 while x>0: summ+= x%10 x//=10 if summ%2==0: return 1 return 0 for i2 in range(5): for i3 in range(5): for i4 in range(5): for i5 in range(5): for i6 in range(5): x = '3'+str(i2)+str(i3)+str(i4)+str(i5)+str(i6) x = int(x) if f(x): k+=1 print(k)[/pre2] Код написан из сказанного выше, но по мне он будет понятнее, хоть и не так изящен. К тому же, код выше выдает ответ 1563, хотя ответ 1562. Не особо хотелось искать где там потерялась лишняя единица, потому просто привела другое решение. #за форматирование отдельное извинение, просьба к модераторам поправить

Карина: #include <iostream> #include <cmath> using namespace std; int main() { int s=0; for (int a=0;a<5;a++) for (int b=0;b<5;b++) for (int c=0;c<5;c++) for (int d=0;d<5;d++) for (int e=0;e<5;e++) { int m=pow(5,5)*3+pow(5,4)*a+pow(5,3)*b+pow(5,2)*c+pow(5,1)*d+pow(5,0)*e; if (m%2==0) s++; } cout<<s; // Сколько существует четных пятеричных чисел длиной 6, начинающихся с цифры 3? return 0; }


Nox: Ваше решение верное, но задачу можно понять по-разному. Здесь не совсем корректно составлен вопрос. Если спрашивали количество четных чисел в пятеричной системе длиной 6, начинающихся с цифры 3. то ответ 1875. [pre2] from itertools import product s='01234' a=[''.join(i) for i in product('3',s,s,s,s,'024')] print(len(a)) [/pre2] А если количество четных чисел в десятичной системе счисления в диапазоне от int('300000',5) до int('344444',5), то правильное решение представлено ниже и ответ 1562 [pre2] a=[x for x in range(int('300000',5),int('344444',5)+1) if x%2==0] print(len(a)) [/pre2] ФОРМУЛИРОВКА : "Сколько существует четных пятеричных чисел длиной 6, начинающихся с цифры 3?" Я со своими знаниями русского языка понял именно, что работать нужно в 5 СС и верный ответ с такой формулировкой все-таки 1875

oval: Nox пишет: Ваше решение верное, но задачу можно понять по-разному. Здесь не совсем корректно составлен вопрос. Если спрашивали количество четных чисел в пятеричной системе длиной 6, начинающихся с цифры 3. то ответ 1875. Вопрос корректен. Число четное если оно делится на 2 без остатка, и это никак не связано с системой счисления

oval: рассмотрим число 3abcde5 - четное, где a,b,c,d,e-цифры в 5-ричной системе счисления(от 0 до 4) 5x - нечетное число, а 5x - 1 - четное 3abcde5 = 3*55 + a*54 + b*53 + c*52 + d*5 + e = 3*(55 - 1)+a*(54 - 1)+b*(53 - 1)+c*(52 - 1)+d*(5 - 1) +3 + a + b + c + d + e Часть суммы, выделенная красным, четная, значит четность числа в пятиричной системе счисления зависит от четности суммы цифр числа в этой системе счисления Это верно для любой системы счисления, у которой основание нечетное!!! 3 + a + b + c + d + e - четное, значит a + b + c + d + e - нечетное можно сделать вывод, что среди a,b,c,d,e может быть одно нечетное или три нечетных или все нечетные одно нечетное 2*3*3*3*3*5 (5 вариантов выбрать какое именно число нечетное) = 810 три нечетных 2*2*2*3*3*С35 = 720 все нечетные 2*2*2*2*2 = 32 итого 1562

Nox: oval Вы правы это все из-за моего невежества - не знаю признаков четности в нечетных СС, приведу для таких же как я ещё раз признаки четности из википедии: Для всех систем счисления с чётным основанием (например, для шестнадцатеричной), действует тот же признак чётности, что и для десятичной СС: число делится на 2, если его последняя цифра делится на 2. Для систем счисления с нечётным основанием существует другой признак чётности: число чётно тогда и только тогда, когда чётна сумма его цифр[1][2]. Например, число, обозначаемое записью «136», чётно в любой системе счисления, начиная с семеричной[1]. Еще один вариант решения: [pre2] from itertools import product k=0 s=(0,1,2,3,4) for i in product(s,repeat=6): if i[0]==3 and sum(i)%2==0: k+=1 print(k) [/pre2] Благодарю за беседу, тема закрыта!

flotik: v='01234' k=0 for a in v: for b in v: for c in v: for d in v: for e in v: for f in v: p=a+b+c+d+e+f if p[0]=='3' and int(p,5)%2==0: print(p) k+=1 print(k) Я вот так делаю комбинаторику, система счисления много чего решает, поэтому в 10 строке перевожу в 10-ную сс



полная версия страницы