27.02.2017, 02:08 | #1 (permalink) |
Новичок
Регистрация: 27.02.2017
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Помогите расшифровать ребус
одинаковыми цифрами. Найти также такие значения цифр, при которых сумма цифр в результате окажется наибольшей КОТ+КОТ+КОТ+КОТ=УСЫ Что бы получилось аналогично как в этом примере: (шлак+шлак+шлак=блок) PHP код:
|
27.02.2017, 02:08 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Информативные ответы вы можете найти в схожих обсуждениях Помогите расшифровать код Помогите расшифровать ошибки Помогите расшифровать CBS.log Помогите расшифровать |
27.02.2017, 12:08 | #2 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
Несколько пояснений. Поскольку вариантов расшифровки оказалось много (аж 27 штук), я поставил вывод в файл, а не на экран. Имя файла и путь, естественно, поправьте по своему усмотрению. Булева функция St1 проверяет, что все цифры в трехзначном числе - разные. Булева функция St2 проверяет, что в слагаемом и сумме нет одинаковых цифр. Эти функции нужны потому, что в словах "КОТ" и "УСЫ" нет как повторяющихся букв внутри них, так и между собой. Функция Sum считает сумму цифр в результате. Код:
Var kot,usi,R:Array[1..100] of Integer; i,j,k,Rmax:Integer; f:text; Function St1(n:Integer):boolean; var S:String; begin Str(n,S); St1:=(S[1]<>S[2]) and (S[1]<>S[3]) and (S[2]<>S[3]); end; Function St2(n,m:Integer):boolean; var Sn,Sm:String; p,q:byte; b:boolean; begin Str(n,Sn); Str(m,Sm); b:=true; for p:=1 to 3 do for q:=1 to 3 do if Sn[p]=Sm[q] then b:=false; St2:=b; end; Function Sum(n:Integer):Byte; var m:Integer; Smm:byte; begin m:=n; Smm:=m mod 10; m:=m div 10; Smm:=Smm+(m mod 10)+(m div 10); Sum:=Smm; end; Begin Assign(f,'D:\kot_usi.txt'); Rewrite(f); Rmax:=0; j:=0; for i:=400 to 999 do if ((i mod 4)=0) then begin k:=i div 4; if St1(k) and St1(i) and St2(k,i) then begin j:=j+1; usi[j]:=i; kot[j]:=k; R[j]:=Sum(usi[j]); if R[j]>Rmax then Rmax:=R[j]; writeln(f,j:2,') ',kot[j],' + ',kot[j],' + ',kot[j],' + ',kot[j],' = ',usi[j], ' Sum = ',R[j]); end; end; Writeln(f); Writeln(f,'With maximal sum:'); for i:=1 to j do if R[i]=Rmax then writeln(f,' ',kot[i],' + ',kot[i],' + ',kot[i],' + ',kot[i],' = ',usi[i], ' Sum = ',R[i]); Close(f); End. |
|
27.02.2017, 20:49 | #3 (permalink) |
Новичок
Регистрация: 27.02.2017
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Не могли бы вы помочь, если не сложно, составить именно так как в примере, что бы получилось аналогичное решение, очень нужно
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|