解题思路:
这道题由于没有告诉我们何时输入结束,所以可以循环成对的输出,就是输入系数和指数直接计算然后输出,直到结束。因为用GO实现,可以读入字符串,然后转换为字符串切片,我就直接接收所有输入,然后统一输出了。
1.需要考虑是否是第一组输出
2.由于指数是递减输入的,所以到指数为1的时候,其实计算完就可以结束了,因为后面指数肯定为0
3.提供几组测试数据吧:
输入:3 3 2 2 1 1 //正常指数顺序下减
输出:6 2 4 1 1 0
输入:0 3 2 2 1 0 //指数由2直接跳到0
输出:0 2 4 1
输入:0 3 3 0 //指数由3到0
输出:0 2
输入:0 0 //第一组就为0
输出:0 0
输入:2 0 //第一组就为0
输出:0 0
package main
import (
"bufio"
"fmt"
"os"
"strconv"
"strings"
)
func main() {
var inputReader *bufio.Reader
inputReader = bufio.NewReader(os.Stdin)
str,_ := inputReader.ReadString('\n')
strArray := strings.Fields(str)
strLen := len(strArray)
for i:=0; i<strLen; i+=2 {
coefficient,_ := strconv.Atoi(strArray[i]) //系数
index,_:= strconv.Atoi(strArray[i+1]) //指数
if index == 0 && i == 0 { //用于第一个指数为0
fmt.Printf("0 0")
}
coefficient *= index
index -= 1
if index < 0 {//最后一组指数为0
break
}
if index == 0 {//判断是否为倒数第2组也就是指数为1,因为后面不用计算了
if i == 0 {
fmt.Printf("%d %d", coefficient, index)
} else {
fmt.Printf(" %d %d", coefficient, index)
}
break
} else {
if i == 0 {
fmt.Printf("%d %d", coefficient, index)
}else {
fmt.Printf(" %d %d", coefficient, index)
}
}
}
}