• 1010. 一元多项式求导 (25)


    原题: https://www.patest.cn/contests/pat-b-practise/1010

    实现思路: 首先多项式的存储直接用数组, 读数的时候需注意, 按照题目的描述
    我们需要, 当输入为' '时结束读数, 所以这里需要用到getchar, 求导比较简单
    i每次循环加2, 按照要求存放即可.

    #include <stdio.h>
    
    // input: 3 4 -5 2 6 1 -2 0
    // output: 12 3 -10 1 6 0
    
    int main () {
        int source[1100];     // 原多项式, 下标0不存东西
        int res[1100];        // 结果多相似, 下标0不存东西
        int slen = 0;         // 原多项式长度, 指向最后一个元素
        int rlen = 0;         // 结果多项式长度, 指向最后一个元素
        int si = 1;
        int ri = 1;
        int i;
        char isEnter = 'x';   // 初始任意非
    字符, 靠它实现, 按回车结束循环
        char ch = ' ';        // 打印控制字符
    
        // 读数
        while (isEnter != '
    ') {
            scanf("%d", &source[si]);
            slen = slen + 1;
            si = si + 1;
            isEnter = getchar();
        }
    
        // 求导
        // 指数为0, 该项直接不用看了
        // 因为题目中说了, 输入是按照指数递降的方式, 那么
        // 常数项, 只可能在最后, 所以首先检查下最后一项是不是0,
        // 如果是0, 直接删掉, 也就是长度-2
        if (source[slen] == 0) {
            slen = slen - 2;
        }
        // 根据题目的含义, 输入不可能出现0 0, 但输出可能会出现
        if (slen == 0) {
            printf("0 0
    ");
        }
        // 循环每次+2
        for (i=1; i<=slen; i+=2) {
            res[ri] = source[i] * source[i + 1]; // 系数
            ri = ri + 1;
            res[ri] = source[i + 1] - 1;   // 指数
            ri = ri + 1;
            rlen = rlen + 2; // 指数和系数都添加一次, 总长+2
        }
    
        for (i=1; i<=rlen; i++) {
            if (i == rlen) {
                ch = '
    ';
            }
            printf("%d%c", res[i], ch);
        }
    
        return 0;
    }
    
    
  • 相关阅读:
    Git常用操作命令
    百度地图集成--二
    百度地图的集成--超详细
    iOS开发系列--地图与定位
    整理了一份React-Native学习指南(转)
    iOS高级编程之JSON,XML数据解析
    iOS开发基础
    C#001
    C#00
    英语学习tips
  • 原文地址:https://www.cnblogs.com/asheng2016/p/7661341.html
Copyright © 2020-2023  润新知