генерация того же числа с заданной длиной

У меня есть математическое задание, которое я должен сделать в коде.
Я перепробовал все, о чем думал, но не смог найти решение.
Все это должно быть сделано без использования PHP-функций, только математические операции.
Вы можете использовать время, для и такие …

Так у меня есть номер например 9
Теперь я должен создать номер длины 9 который был бы 999999999

Если бы у меня был, например, номер 3тогда результат должен быть 333,

Есть идеи?

$gen = -1;
while($highest > 0) {
$gen = $highest + ($highest * 10);
$highest = $highest - 1;
}

echo $gen;

0

Решение

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

$x=9;
$result=0;
for($i=$x; $i; --$i){         // this looping expression can be structured however you wish potato-potatoe
$result+=$x*(10**($i-1));  // x times (10 to the power of (i-1))
}
echo $result;
// 999999999

*нота: ** действует как pow() если вы хотите посмотреть это.


Позднее редактирование: вот умный, маленький метод без петель (тихо гордый). Я только звоню range() а также foreach() для демонстрации; это не неотъемлемая часть моего метода.

Демо-версия: https://3v4l.org/GIjfG

foreach(range(0,9) as $n){
// echo "$n -> ",(integer)(1/9*$n*(10**$n)-($n/10)),"\n";
// echo "$n -> ",(1/9*$n*(10**$n)-(1/9*$n)),"\n";
// echo "$n -> ",(int)(1/9*10**$n)*$n,"\n";
// echo "$n -> ",(int)(10**$n/9)*$n,"\n";
echo "$n -> ",(10**$n-1)/9*$n,"\n";
}

Выход:

0 -> 0
1 -> 1
2 -> 22
3 -> 333
4 -> 4444
5 -> 55555
6 -> 666666
7 -> 7777777
8 -> 88888888
9 -> 999999999

1/9 герой этого метода, потому что он генерирует .111111111(Повторение). Из этого числа с плавающей запятой я использую 10**$n «сдвинуть» достаточно 1s слева от десятичной запятой, затем умножая это число с плавающей запятой на $n, затем число с плавающей точкой должно быть преобразовано в целое число для завершения.

Согласно комментарию @ axiac, новый герой 10**$n-1 который генерирует серию девяток до желаемой длины (без чисел с плавающей запятой). Затем разделите девять на девять, чтобы получить серию единиц, которая станет идеальным множителем. Наконец, умножьте серию единиц на входное число, чтобы получить желаемый результат.

4

Другие решения

Вам нужно выполнить две операции:

  1. дали номер $number, добавьте цифру $n к этому;
  2. повторить операцию # 1 несколько раз ($n раз).

Операция № 1 проста:

$number = $number * 10 + $n;

Операция №2 еще проще:

for ($i = 0; $i < $n; $i ++)

Что еще тебе нужно?
Инициализация переменной, используемой для хранения вычисленного числа:

$number = 0;

Поместите их в порядок, и вы получите:

// The input digit
// It gives the length of the computed number
// and also its digits
$n = 8;

// The number we compute
$number = 0;

// Put the digit $n at the end of $number, $n times
for ($i = 0; $i < $n; $i ++) {
$number = $number * 10 + $n;
}

// That's all
3

Если intval() принято:

$result = '';
$input = 9;
for($i=0; $i < $input; $i++){
$result .= $input;
}
$result = intval($result);

еще:

$result = 0;
$input = 9;
for($i=0; $i < $input; $i++){
$factor = 1;
for($j = 0; $j < $i; $j++){
$factor *= 10;
}
$result += $input * $factor;
}

=>
9 + 90 + 900 + 9000 + 90000 …

2
По вопросам рекламы [email protected]