Submission #2225049


Source Code Expand

package main

import (
	"bufio"
	"fmt"
	"io"
	"log"
	"os"

	"strconv"
	"strings"
)

func countToOperation(txts []string) (int64, error) {
	var res int64 = 0

	for _, txt := range txts {
		num, err := strconv.ParseInt(txt, 0, 64)
		if err != nil {
			return res, err
		}

		// 何回割り切れたか
		var cnt int64 = 0
		for {
			if num == 0 || num%2 == 1 {
				break
			}
			cnt++
			num = num / 2
		}

		// 1回も割り切れないなら終了
		if cnt == 0 {
			return 0, nil
		}

		// 最終結果が現在値よりも低い場合は更新
		if res == 0 || cnt < res {
			res = cnt
		}
	}
	return res, nil
}

func Run(in io.Reader, out io.Writer) error {
	sc := bufio.NewScanner(in)

	_ = sc.Scan()
	for sc.Scan() {
		line := sc.Text()
		a := strings.Split(line, " ")
		cnt, err := countToOperation(a)
		if err != nil {
			return err
		}
		fmt.Fprintf(out, "%d\n", cnt)
		return nil
	}

	return nil
}

func main() {
	err := Run(os.Stdin, os.Stdout)

	if err != nil {
		log.Fatal(err)
	}
}

Submission Info

Submission Time
Task B - Shift only
User mijime0523
Language Go (1.6)
Score 200
Code Size 1068 Byte
Status AC
Exec Time 1 ms
Memory 640 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 200 / 200
Status
AC × 3
AC × 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 AC 1 ms 640 KB
2.txt AC 1 ms 640 KB
3.txt AC 1 ms 640 KB
4.txt AC 1 ms 640 KB
5.txt AC 1 ms 640 KB
6.txt AC 1 ms 640 KB
7.txt AC 1 ms 640 KB
sample1.txt AC 1 ms 640 KB
sample2.txt AC 1 ms 640 KB
sample3.txt AC 1 ms 640 KB