if ($ultimo_tesdoc) { $lastProtocol = $ultimo_tesdoc['protoc']; } if ($ultimo_tesmov) { if ($ultimo_tesmov['protoc'] > $lastProtocol){ $lastProtocol = $ultimo_tesmov['protoc']; } } return $lastProtocol+1; } $causa = gaz_dbi_get_row($gTables['caucon'],'codice',$form['codcausale']); if ($causa['regiva'] > 0) { // trovo l'ultimo numero di protocollo e di documento $form['protocollo'] = getLastNumber(substr($form['codcausale'],0,1).'__',$form['date_reg_Y'],$form['sezioneiva'],$causa['regiva']); if ($causa['regiva'] <= 5) { // il numero di documento solo se è di vendita $form['numdocumen'] = getLastNumber($form['codcausale'],$form['date_reg_Y'],$form['sezioneiva'],$causa['regiva']); } } if ($causa['regiva'] == 0 and $_POST['registroiva'] > 0) {//se la nuova causale non prevede righi IVA mentre la precedente lo prevedeva, elimino i righi for($i=$_POST['rigiva']-1; $i >= 0; $i-- ) { //qui cancello tutti i movimenti IVA array_splice($form['id_rig_ri'],$i,1); array_splice($form['codiva_ri'],$i,1); array_splice($form['imponi_ri'],$i,1); array_splice($form['impost_ri'],$i,1); } } elseif ($causa['regiva'] > 0 and $_POST['registroiva'] > 0) { //se la nuova causale prevede righi IVA come la precedente li riuso per caricarci le nuove //calcolo il totale dell'imponibile e dell'iva postati $imponi = 0; $impost = 0; for ($i = 0; $i < $_POST['rigiva']; $i++ ) {
<?php define("CARD_NUMBER_LENGTH", 16); $cardDatas = trim(fgets(STDIN)); $yealyMargin = 0; for ($i = 0; $i < $cardDatas; $i++) { $cardNumber = trim(fgets(STDIN)); echo getLastNumber($cardNumber) . "\n"; } /** * カード番号の末尾を計算する * @param type $cardNumber * @return type int */ function getLastNumber($cardNumber) { // 偶数桁の数字をそれぞれ2倍し総和をとったものをeven $even = 0; // 奇数桁の数字の総和をとったものをodd $odd = 0; // 左から16桁目がXなので15桁目まで計算 for ($j = 0; $j < CARD_NUMBER_LENGTH - 1; $j++) { // 奇数桁 if ($j % 2 != 0) { $odd += $cardNumber[$j]; } else { $even += getCalculatedEvenNumber($cardNumber[$j]); } } // 余りの計算 $remainder = ($odd + $even) % 10;