文章目录
- 题目描述
- 知识点
- 我的实现
- 码前思考
- 代码实现
- 码后反思
题目描述
知识点
模拟题
我的实现
码前思考
就是模拟题了
代码实现
//使用后结构体来办事
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
const int maxn = 2e3+10;
struct node{int exp;double coef;node(){}node(int e,double c):exp(e),coef(c){}
}; vector<node> first;
double res[maxn];int main(){//freopen("input.txt","r",stdin);fill(res,res+maxn,0.0);int k;int exp;double coef;//第一次输入scanf("%d",&k);for(int i=0;i<k;i++){scanf("%d %lf",&exp,&coef);first.push_back(node(exp,coef));}//第二次输入scanf("%d",&k);for(int i=0;i<k;i++){scanf("%d %lf",&exp,&coef);for(int j=0;j<first.size();j++){res[exp+first[j].exp] += coef*first[j].coef;}}int cnt = 0;for(int i=0;i<maxn;i++){if(res[i]!=0.0){cnt++;}}printf("%d",cnt);for(int i=maxn-1;i>=0;i--){if(res[i]!=0.0){printf(" %d %.1f",i,res[i]);}} return 0;
}
码后反思
- 需要注意的是,两个指数相加之后可能会大于
1000
,所以数组的范围应该是大于2000
的,我第一次提交的时候最后两个测试用例出现了段错误,就是因为这个原因。