ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

PAT 1009

2021-03-03 13:57:39  阅读:178  来源: 互联网

标签:PAT int res ite ++ 1009 it2 it1


PAT 1009

水题,注意乘积系数为0的项不要输出。

另外用G++编译有问题,用clang就没问题,还没找到原因,猜测可能是因为map中初始化的问题。

代码:

#include<iostream>
#include<map>
#include<algorithm>
#include<iomanip>

using namespace std;

int K = 0;

struct cmp{
    bool operator()(const int& o1, const int& o2)const{
        return o1 > o2;
    }
};

int main(){
    map<int,double> m1,m2;
    map<int,double,cmp> res;
    cin>>K;
    for(int i = 0;i < K;i++){
        int tmp;
        cin>>tmp>>m1[tmp];
    }
    cin>>K;
    for(int i = 0;i < K;i++){
        int tmp;
        cin>>tmp>>m2[tmp];
    }
    for(map<int,double>::iterator it1 = m1.begin();it1 != m1.end();it1++)
        for(map<int,double>::iterator it2 = m2.begin();it2 != m2.end();it2++){
            if(!res.count(it1->first+it2->first)) res[it1->first+it2->first] = 0;
            res[it1->first+it2->first] += it1->second * it2->second;
        }
    int s = (int) res.size();
    for(map<int,double>::iterator ite = res.begin();ite != res.end();ite++){
        if(ite->second == 0) s--;
    }

    cout<<s<<" ";
    int i = 0;
    map<int,double,cmp>::iterator ite = res.begin();
    for(;i < res.size()-1;ite++,i++){
        if(ite->second != 0)
        cout<<ite->first<<" "<<setiosflags(ios::fixed)<<setprecision(1)<<ite->second<<" ";
    }
    if(ite->second != 0)
    cout<<ite->first<<" "<<setiosflags(ios::fixed)<<setprecision(1)<<ite->second;
}

6ms

标签:PAT,int,res,ite,++,1009,it2,it1
来源: https://blog.csdn.net/qq_43513855/article/details/114310564

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有