1001 A+B Format
(解题思路):利用数组存取每一位,当数组的下标是3的倍数的时候额外输出一个','
#include<iostream> #include<vector> using namespace std; int main(){ int a,b; cin>>a>>b; int sum=a+b; if(sum==0){ cout<<0; return 0; } if(sum<0){ cout<<'-'; sum*=-1; } vector<int>v; while(sum!=0){ v.emplace_back(sum%10); sum/=10; } for(int i=v.size()-1;i>=0;i--){ cout<<v[i]; if(i&&i%3==0)cout<<','; //注意当i为零的时候不需要输出',' } return 0; }
1002 A+B for Polynomials
(解题思路):利用数组存储幂不相同的x的系数,最后进行输出(注意事项):数组初始为0;由于精度原因,最好利用printf函数进行输出#include<iostream> #include<cstdio> using namespace std; int main(){ double cur[1001]={0}; int k; cin>>k; while(k--){ int n; double d; cin>>n>>d; cur[n]+=d; } cin>>k; while(k--){ int n; double d; cin>>n>>d; cur[n]+=d; } int Sum=0; for(int i=0;i<=1000;i++){ if(cur[i]!=0)Sum++; } cout<<Sum; for(int i=1000;i>=0;i--){ if(cur[i]!=0){ printf(" %d %.1f",i,cur[i]); } } return 0; }
1002 A+B for Polynomials
(解题思路2):目的:减少数组的空间消耗 优化:利用map存储幂不相同的x的系数,最后进行输出#include<iostream> #include<map> #include<cstdio> using namespace std; int main(){ map<int,double>cur; int k; cin>>k; while(k--){ int n; double d; cin>>n>>d; cur[n]+=d; } cin>>k; while(k--){ int n; double d; cin>>n>>d; cur[n]+=d; if(cur[n]==0)cur.erase(n); //为了方便计算多项式的式子的数量 } cout<<cur.size(); for(auto it=cur.end();it!=cur.begin();){ --it; printf(" %d %.1f",it->first,it->second); } return 0; }标签:pat,cur,int,double,cin,--,甲级,include,刷题 From: https://www.cnblogs.com/jerry-autumn/p/17050876.html