[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Таблица умножения
Страницы: 1, 2, 3
Chapollino86
Есть три числа.
a от 1 до 21
b от 1 до 14
c от 1 до 7

необходимо что-то вроде таблицы умножения
a = 19
b = 12
c =6

a*b*c=d

на стороне получателя есть число d=1368
необходимо d разложить на a*b*c и получить,
a = 19
b = 12
c =6
Ron
Задача разложить число на 3 множителя, надо полагать, целочисленных. Подсказка: исходя из условия задачи имеем абсолютный диапазон 1-2058, на (перед) первом шаге. Причем, результат деления на первом шаге не может превышать 98, чтобы задача имела решение. На последнем шаге должно остаться число не более 7.

Всё, приступайте к кодингу! =)
Chapollino86
чё-то не получается...
используется перевод числа в 21, 14 и 7 систему исчисления.




$number =
$nomer = base_convert_z($number, 10, 2); //Перевод в 2 систему исчисления.

preg_match_all('!\d{11}!', $nomer, $result); //Разделяем число по 11 бит =2^11=2048
for ($i=0; $i< count($result[0]); $i++) { //Вытаскиваем секции по одной.
//echo "<br>". $result[0][$i] . "\n"; //Результат в переменной $result[0][$i]


$Chislo = $result[0][$i];
echo $Chislo.' Число zzzzxxx <br>';

$Chislo121 = base_convert_z($Chislo, 2, 21); //Перевод в 21 систему исчисления
echo $Chislo121.' Число zzzzxxx <br>';

preg_match_all('!\d{1}!', $Chislo121, $Chislo104);
for ($i=0; $i< count($result[0]); $i++) {
$Chislo105 = $Chislo104[0][ $i++]; //Результат в переменной $result[0][$i]
echo $Chislo105.' Число 105 <br>';
$number = substr_replace($number, '', 0, 6);
}
}






function base_convert_z($numberInput, $fromBaseInput, $BaseOut)
{
$chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$razmer = strlen($chars);

if ($fromBaseInput <= $razmer & $BaseOut <= $razmer) {
$fromBaseInput = substr($chars, 0, $fromBaseInput);
$BaseOut = substr($chars, 0, $BaseOut);
}
if ($fromBaseInput==$BaseOut) return $numberInput;
$fromBase = str_split($fromBaseInput,1);
$toBase = str_split($BaseOut,1);
$number = str_split($numberInput,1);
$fromLen=strlen($fromBaseInput);
$toLen=strlen($BaseOut);
$numberLen=strlen($numberInput);
$retval='';
if ($BaseOut == '0123456789')
{
$retval=0;
for ($i = 1;$i <= $numberLen; $i++)
$retval = bcadd($retval, bcmul(array_search($number[$i-1], $fromBase),bcpow($fromLen,$numberLen-$i)));
return $retval;
}
if ($fromBaseInput != '0123456789')
$base10=base_convert_z($numberInput, $fromBaseInput, '0123456789');
else
$base10 = $numberInput;
if ($base10<strlen($BaseOut))
return $toBase[$base10];
while($base10 != '0')
{
$retval = $toBase[bcmod($base10,$toLen)].$retval;
$base10 = bcdiv($base10,$toLen,0);
}
return $retval;
}





Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.