• [PAT练级笔记] 08 Basic Level 1010


    乙级的题目训练主要用来熟悉编程语言的语法和形成良好的编码习惯和编码规范。从小白开始逐步掌握用编程解决问题。

    PAT乙级BasicLevelPractice 1010

    问题分析

    题设要求"实现一元多项式的求导", 这意味着"按照求导的规则/步骤"获得的输出就是题设要求的输出.

    “求导”

    求导的过程可以描述如下:
    对于多项式的单个项而言, 这个项求导的步骤为:

    1. 系数乘以指数的积作为新的指数
    2. 指数-1

    多项式的求导可以描述为:

    1. 对各个项求导
    2. 将各个项的求导结果相加

    3x^4 - 5x^2 + 6x^1 - 2 -> 12x^3 - 10 + 6

    根据求导的定义, 我们可以看到其过程是对各个"系数"和"指数"的加法和乘法.
    只要我们能够将"系数"和"指数"存储, 并且对应的系数和指数进行上述的运算, 就可以算出导数.

    系数: [3, -5, 6, -2] -> [34, -52, 61, -20] -> [12, -10, 6]
    指数: [4, 2, 1, 0] -> [4-1, 2-1, 1-1, 0-1] -> [3, 1, 0]

    将思路完整描述如下:

    1. 获取系数和指数数据
    2. 建立系数和指数之间的对应关系, 要能够知道哪个系数和哪个指数是属于同一个项的
    3. 执行项的求导"系数乘以指数; 指数减去一"
    4. 将各个项的求导结果相加作为多项式的求导结果

    实现上需要补充的细节

    1. 题设上没有先传入一个整数表示非零项的个数, C语言如何处理这种输入个数不确定的输入?
    2. 边界情况: 输入的多项式是一个常数项, 则其导数为0, 这种情况需要输出"0 0"

    完整提交代码

    /*
    问题分析:
    题设要求"实现医院多项式的求导", 这意味着"按照求导的规则/步骤"获得的输出就是题设要求的输出.
    
    "求导"
    求导的过程可以描述如下:
    对于多项式的单个项而言, 这个项求导的步骤为:
    1. 系数乘以指数的积作为新的指数
    2. 指数-1
    
    
    多项式的求导可以描述为:
    1. 对各个项求导
    2. 将各个项的求导结果相加
    
    3x^4 - 5x^2 + 6x^1 - 2 -> 12x^3 - 10 + 6
    
    根据求导的定义, 我们可以看到其过程是对各个"系数"和"指数"的加法和乘法.
    只要我们能够将"系数"和"指数"存储, 并且对应的系数和指数进行上述的运算, 就可以算出导数.
    
    系数: [3, -5, 6, -2]  -> [3*4, -5*2, 6*1, -2*0] -> [12, -10, 6]
    指数: [4,  2, 1,  0]  -> [4-1,  2-1, 1-1,  0-1] -> [3,    1, 0]
    
    将思路完整描述如下:
    1. 获取系数和指数数据
    2. 建立系数和指数之间的对应关系, 要能够知道哪个系数和哪个指数是属于同一个项的
    3. 执行项的求导"系数乘以指数; 指数减去一"
    4. 将各个项的求导结果相加作为多项式的求导结果
    
    【实现上需要补充的细节】
    1. 题设上没有先传入一个整数表示非零项的个数, C语言如何处理这种输入个数不确定的输入?
    1. 边界情况: 输入的多项式是一个常数项, 则其导数为0, 这种情况需要输出"0 0"
    */
    
    #include 
    
    int main()
    {
        int coefficient[10000];
        int index[10000];
        int i = 0;
        while (scanf("%d %d", &coefficient[i], &index[i]) == 2)
        {
            i++;
        }
        int item_amount = i;
    
        for (int i = 0; i < item_amount; i++)
        {
            coefficient[i] = coefficient[i] * index[i];
            index[i]--;
            if (coefficient[i] != 0)
            {
                if (i != 0){
                    printf(" ");
                    
                }
                printf("%d %d", coefficient[i], index[i]);
            }
        }
        
        if (item_amount == 1 && coefficient[i] == 0 && index[i] == 0){
            printf("0 0");
        }
    
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
  • 相关阅读:
    DOM - 节点操作
    IB音乐课难不难?
    计算机毕业设计Java校园疫情防控管理系统(源码+系统+mysql数据库+Lw文档)
    基于 GRU-Attention 的中文文本分类学习记录
    Linux升级OpenSSH 常见问题
    ib中文诗歌赏析,诗歌主题怎么入手?
    小程序开发设计-第一个小程序:创建小程序项目④
    leaflet 地图遮罩、扣洞
    springboot高校社团管理系统
    ili9431液晶 tft_espi图形库演示 时钟、天气、滚动、气象图标
  • 原文地址:https://blog.csdn.net/qq_41785288/article/details/126258888