Go 中的模块化算术实现 - 错误答案

问题描述

我一直在研究 Kattis modular arithmetic problem。下面是我使用 package big 的 Golang 解决方案。代码通过了已发布的测试用例,但未能通过秘密测试用例(“错误答案”)。我正在努力找出问题所在。

func ModularArithmetic() {
    scanner := bufio.NewScanner(os.Stdin)
    scanner.Split(bufio.ScanWords)
    for true {
        n := ScanInt64(scanner)
        t := ScanInt64(scanner) 
        if n == 0 && t == 0 {
            return
        }
        nBig := big.NewInt(int64(n))
        for i := int64(0); i < t; i++ {
            x := ScanInt64(scanner)
            scanner.Scan()
            op := scanner.Bytes()
            y := ScanInt64(scanner)
            xBig := big.NewInt(int64(x))
            yBig := big.NewInt(int64(y))
            switch op[0] {
            case '+':
                xBig.Add(xBig,yBig)
            case '-':
                xBig.Sub(xBig,yBig)
            case '*':
                xBig.Mul(xBig,yBig)
            case '/':
                yInv := big.NewInt(0)
                yInvRes := yInv.ModInverse(yBig,nBig)
                if yInvRes == nil {
                    fmt.Println(-1)
                    continue
                } else {
                    xBig.Mul(xBig,yInv)
                }
            }
            xBig.Mod(xBig,nBig)
            fmt.Println(xBig)
        }
    }
}

func ScanInt64(scanner *bufio.Scanner) (n int64) {
    scanner.Scan()
    n,_ = strconv.ParseInt(scanner.Text(),10,64)
    return
}

解决方法

我替换后程序被接受

op := scanner.Bytes()

op := strings.TrimSpace(scanner.Text()) 

所以这是一个空白/扫描仪问题。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...