欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

洛谷P1067 多项式输出 (C语言 + 详细注释)

程序员文章站 2024-03-17 20:51:46
...

洛谷P1067 多项式输出 (C语言 + 详细注释)洛谷P1067 多项式输出 (C语言 + 详细注释)

//本题我采用的是分部输出法,即依次输出符号(难点在于+号),系数(难点在于1和-1),未知数,指数。在输出每一部分时分别讨论特殊情况。

下面是我AC的代码:

#include<stdio.h>

int main() {
	int i, n, a[105], flag;         //数组a存储系数
	scanf("%d", &n);              
	flag = 0;                    //flag为0表示是输出第一项,为1表示不是第一项。因为第一项系数为正时不输出'+',所以要特判一下
	for (i = n; i >= 0; i--) {       //小技巧:i直接表示指数,因为是按照指数递减输出,所以i也递减
		scanf("%d", &a[i]);      //一边读入一边输出
		if (a[i]) {             //只有系数不为0才输出
			if (a[i] > 0 && flag)       //输出符号,系数为正且不是第一项时要输出'+'
				printf("+");
			if (a[i] == -1)            //系数为-1时才单独输出'-',否则'-'会随着系数一块输出的,如输出系数-2时就顺带着输出了'-'
				printf("-");

			if (a[i] != 1 && a[i] != -1)      //不是+1和-1就直接输出系数
				printf("%d", a[i]);
			else if (i == 0)           //如果是常数项,那么1就不能省(不用管是1还是-1,因为前面已经处理过符号了)
				printf("1");
			if (i)                  //如果不是常数项就输出未知数x
				printf("x");
			if (i > 1)               //i == 1 时指数为1,不用输出,其他情况i就是指数
				printf("^%d", i);
			flag = 1;                //已经输出了flag就设为1
		}

	}

	return 0;
}

 

上一篇: Minio安装及集群配置手册

下一篇: