求导

一元多项式求导_9

放肆的年华 提交于 2019-11-29 19:34:55
设计函数求一元多项式的导数。 输入格式: 以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。 输出格式: 以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。 输入样例: 3 4 -5 2 6 1 -2 0 输出样例: 12 3 -10 1 6 0 SRC:------------------------------------------ #include <stdio.h> struct m { long A ; int B ; }M[2002] ; int main () { int mm, A ,B , i ; char c ; mm = 0 ; while(1) { scanf("%d", &A); scanf("%d" , &B) ; scanf("%c", &c) ; if ( c == '\n' ) break ; M[mm].A =(long long) A*B ; M[mm].B = B-1 ; mm++ ; } for ( i = 0 ; i < mm ; i++ ) { if ( M[i].A == 0 ) { continue ; } printf("%lld %d", M[i].A ,M[i].B) ; if ( i != mm-1 ) printf(" ") ; }

一元多项式求导

旧时模样 提交于 2019-11-29 19:34:46
#include <stdio.h> #include <string.h> struct N{ int c; int e; }buf[1010],ans[1010]; int main() { freopen("data.in","r",stdin); freopen("d1.out","w",stdout); int x,y,index=0,k=0,i; while(scanf("%d%d",&x,&y)!=EOF) { buf[index].c=x; buf[index].e=y; if(buf[index].e==0) break; index++; } k=index; if(k==0) printf("0 0"); else { for(i=0;i<index-1;i++) { if(buf[i].e!=0) printf("%d %d ",buf[i].c*buf[i].e,buf[i].e-1); } printf("%d %d",buf[i].c*buf[i].e,buf[i].e-1); } return 0; } 来源: http://www.cnblogs.com/been/p/4244219.html

PTA1010一元多项式求导

半腔热情 提交于 2019-11-29 19:33:26
设计函数求一元多项式的导数。 ​ n ​​( n为整数)的一阶导数为 n x ​ n − 1 ​​。) 输入格式: 以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过 1000 的整数)。 数字间以空格分隔 。 输出格式: 以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但 结尾不能有多余空格 。注意 “零多项式”的指数和系数都是 0,但是表示为 0 0 。 输入样例: 3 4 -5 2 6 1 -2 0 输出样例: 12 3 -10 1 6 0刚看到这道题的时候,我很天真的写了split(" "),结果总有两测试点不通过。题目中有3个坑:1.末尾不能有多余空格2.分隔数字的空格可能不止一个3.如果多项式为0多项式,输出0 0code: import java.util.Scanner; public class Main{//success public static void main(String[] args) { Scanner in = new Scanner(System.in); boolean flag = true;//这个flag用来判断是否为0多项式且还能判断是否for循环一次。 String s = in.nextLine();//用nextLine()方法输入下一行内容存储为字符串 in.close();/

7-16 一元多项式求导(20 分)(有关while(scanf(\"%d\",&n)!=EOF))

旧街凉风 提交于 2019-11-29 19:33:11
7-16 一元多项式求导(20 分) 设计函数求一元多项式的导数。 输入格式: 以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。 输出格式: 以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。 输入样例: 3 4 -5 2 6 1 -2 0 输出样例: 12 3 -10 1 6 0 解题思路: 1.一开始还以为这道题蛮简单的,刷刷刷就写了个用数组做的,然后有一个测试点运行超时 2.然后就换了一边输入一边输出,但是还是有个测试点:“无常数项的一般情况 ”通不过,然后在网上找了别人的代码 我发现他们都有写一句 while(scanf("%d",&n)!=EOF) 这丫什么鬼,然后又去网上找了 scanf 的返回值由后面的参数决定 scanf("%d%d", &a, &b); 如果a和b都被成功读入,那么scanf的返回值就是2 如果只有a被成功读入,返回值为1 如果a和b都未被成功读入,返回值为0 如果遇到错误或遇到end of file,返回值为EOF 这句话主要解决 “测试输入包含若干测试实例。当N为0时,输入结束,该实例不被处理。” 好吧,其实还是有一些不懂,暂且先记着吧 1 #include<stdio.h> 2 #include<stdlib.h> 3 4 int main() 5 { 6

PTA 5-16 一元多项式求导 (25) (PAT-B 1010)

旧街凉风 提交于 2019-11-29 19:32:42
题目: http://www.patest.cn/contests/pat-b-practise/1010 设计函数求一元多项式的导数。(注:x n (n为整数)的一阶导数为n*x n-1 。) 输入格式: 以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。 输出格式: 以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。注意“零多项式”的指数和系数都是0,但是表示为“0 0”。 输入样例: 3 4 -5 2 6 1 -2 0 输出样例: 12 3 -10 1 6 0 法一: #include <stdlib.h> #include <string.h> #include <iostream> using namespace std; int main() { int a,b; int flag = 0; b = 1; while(cin>>a>>b){ if(b>0){ if(flag ==0){ cout<<a*b<<' '<<b-1; flag = 1; } else cout<<' '<<a*b<<' '<<b-1; } } if(flag ==0) cout<<"0 0"; //system("pause"); return 0; } 法二: #include <iostream>

02-2. 一元多项式求导 (PAT) - 链表问题

∥☆過路亽.° 提交于 2019-11-29 19:32:30
设计函数求一元多项式的导数。 输入格式: 以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。 输出格式: 以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。注意“零多项式”的指数和系数都是0,但是表示为“0 0”。 输入样例: 3 4 -5 2 6 1 -2 0 输出样例: 12 3 -10 1 6 0实现方法:根据输入建立链表,链表每个结点包含系数和指数,再对链表进行求导处理。实际上使用vector容器更容易解决该问题。 #include <iostream> #include <string> #include <stdlib.h> using namespace std; typedef struct node{ int coef; int expon; struct node *next; } *PtrPolyNode, PolyNode; PtrPolyNode createList(); void deriPoly( PtrPolyNode headNode ); void printPoly( PtrPolyNode headNode ); int main() { PtrPolyNode headNode; headNode = createList(); deriPoly(

1010 一元多项式求导 (25 分)

我的未来我决定 提交于 2019-11-29 19:32:11
1010 一元多项式求导 (25 分) 设计函数求一元多项式的导数。(注: x ​ n ​​( n为整数)的一阶导数为 n x ​ n − 1 ​​。) 输入格式: 以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过 1000 的整数)。数字间以空格分隔。 输出格式: 以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。注意“零多项式”的指数和系数都是 0,但是表示为 0 0 。 输入样例: 3 4 -5 2 6 1 -2 0 输出样例: 12 3 -10 1 6 0 理清楚思路就行: 1.循环储存数据之后,对数据两两处理。(系数和指数) 2.因为“零次多项式”也就是常数项特殊,单独分出来,条件是第一对处理,且指数(第二个数据)为0,对于“非零次多项式”,输出系数(前项)*指数(后项),指数减一,其中对于指数为0的项continue跳过。 C++代码: #include <bits/stdc++.h> using namespace std; int main(void) { vector<int> s; int n; char c; while (1) { cin >> n; s.push_back(n); if ((c = getchar()) == '\n') break; } for (size_t m = 0; m != s

PAT乙级1010.一元多项式求导(25)

混江龙づ霸主 提交于 2019-11-29 19:31:50
1010 一元多项式求导 (25)(25 分) 设计函数求一元多项式的导数。(注:x^n^(n为整数)的一阶导数为n*x^n-1^。) 输入格式:以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。 输出格式:以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。注意“零多项式”的指数和系数都是0,但是表示为“0 0”。 输入样例: 3 4 -5 2 6 1 -2 0 输出样例: 12 3 -10 1 6 0 分析:在输入时即可,处理出结果,先进先出,使用队列存储结果,常数项求导后,为0,需做特殊处理 #include<iostream> #include<queue> #include<stdlib.h> using namespace std; struct M { int x;//系数 int y;//指数 }; int main() { queue<M> Q;//存储求导后的结果 int m, n; while (cin >> m >> n) { if (n != 0) { m = m * n; n--; M *a = new M(); a->x = m; a->y = n; Q.push(*a); } } if(Q.size() == 0) cout << 0 << " " << 0;

PAT001 一元多项式求导

旧城冷巷雨未停 提交于 2019-11-29 19:31:39
题目: 设计函数求一元多项式的导数。(注:x n (n为整数)的一阶导数为n*x n-1 。) 输入格式: 以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。 输出格式: 以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。注意“零多项式”的指数和系数都是0,但是表示为“0 0”。 输入样例: 3 4 -5 2 6 1 -2 0 输出样例: 12 3 -10 1 6 0分析: 主要考查通过链表进行线性结构的存储,注意输入终止判断以及链表插入操作C语言(因为提交时出现NULL报错,所以将NULL替换成了0 导入#include <stdio.h>即可使用NULL) typedef struct Node{ int coe; // 系数 int exp; // 指数 struct Node *next; // 下一项 } List; typedef struct head { struct Node *begin; struct Node *end; } NodeHead; List *insert(int coe, int exp, NodeHead *ptrl); int main() { NodeHead *head = (NodeHead *)malloc(sizeof(NodeHead));

1010 一元多项式求导 (25 分) C语言

荒凉一梦 提交于 2019-11-29 19:31:24
设计函数求一元多项式的导数。(注: x ​ n ​​( n为整数)的一阶导数为 n x ​ n − 1 ​​。) 输入格式: 以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过 1000 的整数)。数字间以空格分隔。 输出格式: 以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。注意“零多项式”的指数和系数都是 0,但是表示为 0 0 。 输入样例: 3 4 -5 2 6 1 -2 0 输出样例: 12 3 -10 1 6 0 #include <stdio.h> #include <stdlib.h> #define MAX 1001 struct Term{ //也可以直接使用数组,程序会简短一些,但用结构数组更容易理解。 int para; int index; }; int main(void) { int i=0,j,k=0; struct Term term[MAX]; while (scanf("%d%d",&term[i].para,&term[i].index) == 2) /*scanf()如果正确读取两个数值,返回值为2 改为while (scanf("%d%d",&term[i].para,&term[i].index) != EOF) 也能通过,更容易理解。 但我使用的编译器却无法运行