Heim > Backend-Entwicklung > PHP-Tutorial > So ermitteln Sie, ob eine Zahlenfolge in PHP fortlaufend multipliziert wird

So ermitteln Sie, ob eine Zahlenfolge in PHP fortlaufend multipliziert wird

小云云
Freigeben: 2023-03-20 08:08:01
Original
1446 Leute haben es durchsucht

Bei einer gegebenen Zahlenfolge A müssen Sie feststellen, ob A eine fortlaufende Multiplikationszahlenfolge ist Zahlen (ab dem N-ten, beginnend mit einer Zahl) ist das Produkt der beiden vorherigen Zahlen. In diesem Artikel wird hauptsächlich anhand eines Beispielcodes erläutert, wie Sie mithilfe von PHP feststellen können, ob es sich um eine kontinuierliche Multiplikation einer Zahlenfolge handelt Wenn Sie es benötigen, können Sie dem Herausgeber folgen, um gemeinsam zu lernen.

(1) '122' --- kann in [1|2|2] aufgeteilt werden

Ergebnis: 1×2=2 (Zahlenzeichenfolge multiplizieren)

(2) '1122242' --- kann in [11|22|242] aufgeteilt werden

Ergebnis: 11×22=242 (Zahlenzeichenfolge multiplizieren)

(3) '1224832256' --- kann aufgeteilt werden in [1|2|2|4|8|32|256]

Ergebnis: 1×2 =2, 2×2=4, 2×4=8, 4×8=32, 8×32=256 (die Zahlenfolge multiplizieren)

(4) '234547898185239692' --- kann aufgeteilt werden in [23454|7898|185239692]

Ergebnis: 23454×7898=185239692 (Zahlenzeichenfolge multiplizieren)

(5) '113' kann sein aufgeteilt in [1|. 1|3]

Ergebnis: 1×1 != 3 (nicht fortlaufende multiplizierte Zahlenfolge)

Code

/**
 * 判断是否连乘数字串函数
* @param $strNum
 * @return bool
 **/
function isExec($strNum) {
 $str = (string)$strNum;

 for ($i = 0; $i < strlen($str); $i++) {
  $k = 1;

  for ($j = $i + 1; $j < strlen($str); $j++) {

   $a_i = 0;
   $b_i = $i + 1;
   $p_i = $i + 1;
   $m_i = $k++;
   $c_i = $b_i + $m_i;
   $res = false;
   $formula = [];

   while (1) {
    $a = substr($str, $a_i, $p_i);
    $b = substr($str, $b_i, $m_i);

    $n = $a * $b;

    $c = substr($str, $c_i, strlen($n));

    //echo &#39;<br/>' . $a . '*' . $b . '=' . $n . '->' . $c . '<br/>';

    if($c){
     $formula[] = $a . '*' . $b . '=' . $n;
    }

    if ($c === false || $c === "") {
     break;
    }

    if (intval($n) == intval($c)) {
     $p_i = strlen($b);
     $m_i = strlen($n);
     $a_i = $b_i;
     $b_i = $c_i;
     $c_i = $b_i + $m_i;
     $res = true;
    } else {
     $res = false;
     break;
    }
   }

   if ($res === true) {
    print_r($formula);
    return true;
   }

   //var_dump($res) . '<br/>';
  }

 }

 return false;
}
Nach dem Login kopieren

Ausführen

var_dump(isExec('1224832256'));

//运行结果
Array
[
   [0] => 1*2=2
   [1] => 2*2=4
   [2] => 2*4=8
   [3] => 4*8=32
   [4] => 8*32=256
]
bool(true)
Nach dem Login kopieren

var_dump(isExec('234547898185239692'));

//运行结果
Array
[
   [0] => 23454*7898=185239692
]
bool(true)
Nach dem Login kopieren

var_dump( isExec('1122242'));

//运行结果
Array
[
   [0] => 11*22=242
]
bool(true)
Nach dem Login kopieren

var_dump(isExec('11234'));

//运行结果
bool(false)
Nach dem Login kopieren

Verwandte Empfehlungen :

So verwenden Sie PHP-Code, um zu überprüfen, ob eine Zahlenfolge zu einer Zahlenfolge verbunden ist

Das obige ist der detaillierte Inhalt vonSo ermitteln Sie, ob eine Zahlenfolge in PHP fortlaufend multipliziert wird. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage