1010. 一元多项式求导 (25)
时间限制
400 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
设计函数求一元多项式的导数。(注:xn(n为整数)的一阶导数为n*xn-1。)
输入格式:以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。
输出格式:以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。注意“零多项式”的指数和系数都是0,但是表示为“0 0”。
输入样例:3 4 -5 2 6 1 -2 0输出样例:
12 3 -10 1 6 0
我的愚蠢方法o(︶︿︶)o#include <stdio.h> int main() { int i = 0, j = 0, count = 0; char ch = NULL; int arr[10]; while (ch != '\n') // 如果是回车则结束循环,输出; { scanf("%d", &arr[i]); ch = getchar(); j++; if ((j&1) == 0) // 位运算 看是不是偶数 { if (arr[i] == 0) arr[i] = arr[i - 1] = 0; else { arr[i - 1] *= arr[i]; arr[i]--; } } i++; } for (i = 0; i < j; i++) { if (((i+1)&1) == 0) // 位运算 看是不是偶数 if (arr[i - 1] == arr[i] == 1) if (j == 2) printf("0 0"); else continue; else { if (count == 0) printf("%d %d", arr[i - 1], arr[i]); else printf(" %d %d", arr[i - 1], arr[i]); count++; } } }
大神方法
#include<stdio.h> int main() { int first = 1; int a, b; while (scanf("%d %d", &a, &b) != EOF) { if (first) {//是第一项 if (b>0) printf("%d %d", a*b, b - 1); else printf("0 0"); first = 0; } else if (b>0) {//不是第一项,且非常数项(因为项数大于1时,常数项不用输出) printf(" %d %d", a*b, b - 1); } } return 0; }