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

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

小云云
小云云Original
2018-02-10 11:09:351410Durchsuche

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;
}

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)

var_dump(isExec('234547898185239692'));

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

var_dump( isExec('1122242'));

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

var_dump(isExec('11234'));

//运行结果
bool(false)

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!

Stellungnahme:
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