FZU - 2115 多项式积分
2013-11-21 21:14
225 查看
题意:
Description
给定一个关于x(小写字母)的多项式,求其关于x的一阶积分,结果按降幂输出,要求结果为最简多项式。输出的多项式符合一般书写规则,即有如下特性:
多项式由单项式相加或相减组成,单项式可以表示成ax^b的形式,其中a、b均为整数,b为大于等于0的整数,a不能为0,特别的,当b等于1时,省略”^1”,写做ax,当b等于0时,写作a,而当a的值为±1时,1必须省略。多项式首项的不允许有“+”。
Input
输入第一行为数据组数T。
每组数据第一行是多项式项数n(1<=n<=10),
第二行n个数表示系数,系数均为绝对值小于1000的整数,至少有1个系数不为0。
第三行n个数表示对应系数下x的指数,数据保证指数两两不等,题中给定的指数均为小于1000的非负整数。
Output
输出也只有一行,为积分后的最简多项式,系数如果是分数写成最简分数形式。
Sample Input
Sample Output
思路:就是简单的求积分,例如ax^b,假设a1x^(b+1)是它的积分,所以有:a1(b+1)=a
推出a1=gcd(a,b+1)*(a/gcd(a,b+1))/((b+1)/gcd(a,b+1)),因为它要求最简分数形式,注意输出的细节就行了,注意它都是整数,所以对于a/gcd,(b+1)/gcd都是大于等于1的
Description
给定一个关于x(小写字母)的多项式,求其关于x的一阶积分,结果按降幂输出,要求结果为最简多项式。输出的多项式符合一般书写规则,即有如下特性:
多项式由单项式相加或相减组成,单项式可以表示成ax^b的形式,其中a、b均为整数,b为大于等于0的整数,a不能为0,特别的,当b等于1时,省略”^1”,写做ax,当b等于0时,写作a,而当a的值为±1时,1必须省略。多项式首项的不允许有“+”。
Input
输入第一行为数据组数T。
每组数据第一行是多项式项数n(1<=n<=10),
第二行n个数表示系数,系数均为绝对值小于1000的整数,至少有1个系数不为0。
第三行n个数表示对应系数下x的指数,数据保证指数两两不等,题中给定的指数均为小于1000的非负整数。
Output
输出也只有一行,为积分后的最简多项式,系数如果是分数写成最简分数形式。
Sample Input
2 3 15 2 -2 2 1 0 1 2 3
Sample Output
5x^3+x^2-2x 1/2x^4
思路:就是简单的求积分,例如ax^b,假设a1x^(b+1)是它的积分,所以有:a1(b+1)=a
推出a1=gcd(a,b+1)*(a/gcd(a,b+1))/((b+1)/gcd(a,b+1)),因为它要求最简分数形式,注意输出的细节就行了,注意它都是整数,所以对于a/gcd,(b+1)/gcd都是大于等于1的
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; typedef pair<int,int>tp; tp a[11]; int t,n; bool cmp(tp a,tp b){ return a.second > b.second; } int gcd(int a,int b){ return b?gcd(b,a%b):a; } int main(){ scanf("%d",&t); while (t--){ scanf("%d",&n); for (int i = 0; i < n; i++) scanf("%d",&a[i].first); for (int i = 0; i < n; i++) scanf("%d",&a[i].second); sort(a,a+n,cmp); int flag = 0; for (int i = 0; i < n; i++){ int up = a[i].first; int low = a[i].second + 1; if (up == 0) continue; if (up > 0 && flag) printf("+"); flag = 1; if (up < 0){ printf("-"); up = -up; } int g = gcd(low,up); if (up/g > 1 || low > g) printf("%d",up/g); if (low > g) printf("/%d",low/g); printf("x"); if (low > 1) printf("^%d",low); } printf("\n"); } return 0; }
相关文章推荐
- FZU - 2115 多项式积分
- 【模拟】FZU 2115 多项式积分
- 大一积分赛 (一)补题——FZU - 2230 【博弈,找规律】
- 表达式树+多项式模拟 fzu2215 Simple Polynomial Problem
- 积分赛 (一)补题——FZU - 1075 【素数】
- FZU 2215 Simple Polynomial Problem (多项式乘法 栈)
- FZU 2215 Simple Polynomial Problem 多项式模拟 表达式树
- [ustctraining][13.05.09]C - 多项式积分
- 理工个人积分赛最后一场(FZU)G - 五子棋,坑爹的大水题~~
- FZU 2090 旅行社的烦恼 Floyd最小环求最短路
- 多项式加减乘求导(链表)(如果多项式不是升序的处理就太恶心了,所以是升序的,我就是这么懒。。。)
- 微积分核心思想
- FZU 1894 志愿者选拔 单调队列
- FZU 2027 单词问题
- 一元多项式运算器
- MATLAB 积分算法
- POJ2527 简化 · 多项式相除求余数
- VS2010 .net4.0 登录QQ 获取QQ空间日志 右键选中直接打开日志 免积分 源码下载
- CSDN 积分的计算规则..学习了...
- FZU - 2085 幸运图