随笔 - 39  文章 - 0  评论 - 0  阅读 - 2728 
多项式加法

题目内容:

一个多项式可以表达为x的各次幂与系数乘积的和,比如:

2x6+3x5+12x3+6x+20

现在,你的程序要读入两个多项式,然后输出这两个多项式的和,也就是把对应的幂上的系数相加然后输出。

程序要处理的幂最大为100。

 

输入格式:

总共要输入两个多项式,每个多项式的输入格式如下:

每行输入两个数字,第一个表示幂次,第二个表示该幂次的系数,所有的系数都是整数。第一行一定是最高幂,最后一行一定是0次幂。

注意第一行和最后一行之间不一定按照幂次降低顺序排列;如果某个幂次的系数为0,就不出现在输入数据中了;0次幂的系数为0时还是会出现在输入数据中。

 

输出格式:

从最高幂开始依次降到0幂,如:

2x6+3x5+12x3-6x+20

注意其中的x是小写字母x,而且所有的符号之间都没有空格,如果某个幂的系数为0则不需要有那项。

 

输入样例:

6 2

5 3

3 12

1 6

0 20

6 2

5 3

2 12

1 6

0 20

 

输出样例:

4x6+6x5+12x3+12x2+12x+40

 
 
这一题没什么 主要是好多细节 我提交了很多次。。。。 纪念一下
 
复制代码
#include <stdio.h>

void getPoly(int a[]){
    int coef,expon;
    do{
        scanf("%d %d",&expon,&coef);
        a[expon] = coef;
    }while (expon != 0);
}

int main(){
    int a[101] = {0},b[101] = {0},c[101] = {0};
    getPoly(a);
    getPoly(b);
    int flag = 0;
    for (int i = 0; i < 101; ++i) {
        c[i] = a[i] + b[i];
    }
    for (int i = 100; i >= 0; i--) {
        if(c[i] != 0){
            if(flag == 0){
                if(i == 0)
                {
                    printf("%d",c[i]);
                }
                else if(i == 1)
                {
                    if(c[i] == 1)
                    {
                        printf("x");
                    }
                    else if (c[i] == -1)
                    {
                        printf("-x");
                    }
                    else
                    {
                        printf("%dx",c[i]);
                    }
                }
                else
                {
                    if(c[i] == 1)
                    {
                        printf("x%d",i);
                    }
                    else if (c[i] == -1)
                    {
                        printf("-x%d",i);
                    }
                    else
                    {
                        printf("%dx%d",c[i],i);
                    }
                }
                flag = 1;
            }else{
                if(i == 0)
                {
                    if(c[i] > 0)
                    {
                        printf("+%d",c[i]);
                    }
                    else{
                        printf("%d",c[i]);
                    }
                }
                else if(i == 1)
                {
                    if(c[i] == 1)
                    {
                        printf("+x");
                    }
                    else if(c[i] == -1)
                    {
                        printf("-x");
                    }
                    else if(c[i] > 0)
                    {
                        printf("+%dx",c[i]);
                    }
                    else
                    {
                        printf("%dx",c[i]);
                    }
                }
                else
                {
                    if(c[i] == 1)
                    {
                        printf("+x%d",i);
                    }
                    else if(c[i] == -1)
                    {
                        printf("-x%d",i);
                    }
                    else if(c[i] > 0)
                    {
                        printf("+%dx%d",c[i],i);
                    }
                    else
                    {
                        printf("%dx%d",c[i],i);
                    }
                }
            }
            
        }
    }
    if(flag == 0){
        printf("0");
    }
    return 0;
}
复制代码

 

 
posted on   Rabbit_XIN  阅读(36)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
点击右上角即可分享
微信分享提示