PAT第一天
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;
}
浙公网安备 33010602011771号