PAT B1010 一元多项式求导
### 输入样例:
3 4 -5 2 6 1 -2 0
输出样例:
12 3 -10 1 6 0
- code1
#include <stdio.h>
#include <algorithm>
using namespace std;
const int maxn = 1010;
const int INF = 0x3fffffff;
int main(){
int c, e;
int a[maxn];
int ans[maxn];
fill(a, a+maxn, INF);
fill(ans, ans+maxn, INF);
while(scanf("%d %d", &c, &e) != EOF){
a[e] = c;
}
int cnt = 0;
for(int i = 1; i < maxn; ++i){
if(a[i] != INF){
cnt++; //==求导后的项数
ans[i-1] = a[i]*i;
}
}
if(cnt == 0) printf("0 0"); //判特!!!
else{
for(int i = maxn-1; i >= 0; --i){
if(ans[i] != INF){
printf("%d %d", ans[i], i);
if(cnt > 1){
printf(" ");
cnt--;
}
}
}
}
}
- T2 code:
#include <bits/stdc++.h>
using namespace std;
const int maxn = 1010;
int poly[maxn];
int main(){
int ex, co, cnt = 0;
while(scanf("%d %d", &co, &ex) != EOF){
poly[ex] = co;
}
for(int i = 1; i < maxn; ++i){
if(poly[i]) cnt++;
poly[i-1] = i * poly[i];
}
if(!cnt) printf("0 0");
else{
for(int i = maxn; i >= 0; --i){
if(poly[i]){
printf("%d %d", poly[i], i);
if(--cnt) printf(" ");
}
}
}
return 0;
}