当前位置: 首页 > news >正文

PAT 乙级 1010 一元多项式求导(解题思路+AC代码)

题目:
设计函数求一元多项式的导数。(注:xn(n为整数)的一阶导数为nxn−1。)

输入格式:

以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过 1000 的整数)。数字间以空格分隔。

输出格式:

以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。注意“零多项式”的指数和系数都是 0,但是表示为 0 0

输入样例:

3 4 -5 2 6 1 -2 0

输出样例:

12 3 -10 1 6 0

代码长度限制 16 KB
时间限制 400 ms
内存限制 64 MB

 

解题思路

这道题看起来很复杂其实很简单,但这都要基于一个前提就是你知道scanf的返回值。

scanf返回值:如果成功,该函数返回成功匹配和赋值的个数。如果到达文件末尾或发生读错误,则返回 EOF。

我们知道当scanf到达文件末尾时,返回EOF那么我们只需要用一个循环遍历整个多项式,在一轮循环中我们需要用两个遍历来接收多项式其中一项的系数和指数,并且打印输出该项求导后的系数和指数。当遇到它的指数为0时,就不打印,因为常数的导数是0。

注意: 这里题目中要求还要考虑0多项式,也就是输入为"n 0"(n为非0整数),输出要为"0 0",那就是不打印的情况就要输出"0 0"。这里我们可以设置一个flag,初始值为1,只要打印了的,就设置为0,整个循环下来后,如果flag的值还是为1(表明没有打印输出),则打印输出"0 0"

 

AC代码

#include <cstdio>int main()
{int m = 0;int n = 0;int flag = 1;while (scanf("%d %d", &m, &n) != EOF){if (n != 0){if (1 == flag)//如果是第一次打印{printf("%d %d", m * n , n - 1);flag = 0;}else//如果不是第一次打印则需要在之前打印一个空格{printf(" %d %d", m * n, n - 1);}}}if (1 == flag)//判断是否之前有过打印,如果没有打印,则输出"0 0"{printf("0 0");}return 0;
}
http://www.lryc.cn/news/58271.html

相关文章:

  • 一维河流污染持续排放模拟(水污染扩散)
  • 数据优化 | CnOpenDataA股上市公司招聘数据
  • nacos和eureka的区别
  • canvas.toDataURL生成图片报错的解决方案
  • 电容笔和Apple pencil的区别是什么?好用电容笔推荐
  • 关于onnx 转ncnn 的问题
  • 设计模式之《责任链模式》
  • Android Studio实现多功能日记本
  • 只依赖Tensorrt和opencv的yolov5源代码
  • 多路I/O转接 poll(了解)
  • 听说你也在为配置tomcat server而烦恼,看我这一篇,让你醍醐灌顶!
  • 【从零开始学Skynet】工具篇(二):虚拟机文件的复制粘贴
  • 全球自动驾驶竞争力最新排行榜,4家中国企业上榜
  • APP启动流程分析
  • IIR数字滤波器简介与实现
  • 3.5 函数的极值与最大值和最小值
  • 第五十八天打卡
  • 双一流大学计算机专业月薪拿2000?网友:我裂开
  • ChatGPT的“N宗罪”?|AI百态(上篇)
  • 48.现有移动端开源框架及其特点—MDL(mobile-deep-learning)
  • 4.9--计算机网络之TCP篇之TCP Keepalive 和 HTTP Keep-Alive --(复习+大总结)---沉淀ing
  • qt完善登录界面(2023-4-6)
  • 104.(cesium篇)cesium卫星轨道模拟
  • Linux shell编程
  • Rasa 3.x 学习系列-Rasa [3.5.4] -2023-04-05新版本发布
  • 进程和线程
  • ps 备忘清单_开发速查表分享
  • 【ROS】基于WIFI网络实现图像消息跨机实时传输
  • 一次性说清楚 JAVA的 ThreadPoolExecutor 、newFixedThreadPool 和newCachedThreadPool 等
  • Android双目三维重建:Android双目摄像头实现双目测距