PAT乙 1010 一元多项式求导(GO实现)

解题思路:
这道题由于没有告诉我们何时输入结束,所以可以循环成对的输出,就是输入系数和指数直接计算然后输出,直到结束。因为用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)
			}
		}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值