Submission #10394370


Source Code Expand

Copy
<?php
$first = trim(fgets(STDIN));
$second = trim(fgets(STDIN));

$c = intval($first);    // 整数の数
$nums = explode(" ", $second);

$or = orBit($nums);

$cnt = 0;

while ($or > 0) {

    if (($or % 2) == 1) {
        break;
    }

    $cnt++;
    $or = $or >> 1;
}

/*
 bit で和演算して、右シフトして 0 の位置を探すことを考えた
 1つ目を特別扱いする手もあるが、条件の 10の9乗以下を想定して、2の30乗を初期値として考える
 ただ、桁数が大きすぎて正常な値にならないので断念。やはり特別扱い
*/
function orBit($nums)
{
    $or = $nums[0];
    for ($i = 1; $i < count($nums); $i++) {

        $num = intval($nums[$i]);
        $or = $or | $num;
    }
    return $or;
}

echo $cnt;

Submission Info

Submission Time
Task ABC081B - Shift only
User nishizuka
Language PHP (5.6.30)
Score 200
Code Size 813 Byte
Status
Exec Time 14 ms
Memory 3828 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 200 / 200
Status
× 3
× 13
Set Name Test Cases
Sample sample1.txt, sample2.txt, sample3.txt
All sample1.txt, sample2.txt, sample3.txt, 1.txt, 2.txt, 3.txt, 4.txt, 5.txt, 6.txt, 7.txt, sample1.txt, sample2.txt, sample3.txt
Case Name Status Exec Time Memory
1.txt 14 ms 3828 KB
2.txt 10 ms 3576 KB
3.txt 10 ms 3576 KB
4.txt 10 ms 3576 KB
5.txt 10 ms 3576 KB
6.txt 10 ms 3576 KB
7.txt 10 ms 3576 KB
sample1.txt 10 ms 3576 KB
sample2.txt 10 ms 3576 KB
sample3.txt 10 ms 3576 KB