1001 A+B Format (20 分)
分析 :题目中的standard format是从最后一位往前每三位一个逗号,而不是从第一位往后
总结 :题目中的要求可能和你先入为主的印象不一样,即使样例和你想的是一样的
Time : 7 min 44 s
#include <bits/stdc++.h> using namespace std; vector<int> ans; int main() { int a,b,sum; cin>>a>>b; sum=a+b; if(sum>=0) { if(sum==0) { cout<<0; return 0; } while(sum) { ans.push_back(sum%10); sum/=10; } for(int i=ans.size()-1;i>=0;i--) { cout<<ans[i]; if(i%3==0&&i) cout<<","; } } else { sum*=-1; cout<<"-"; while(sum) { ans.push_back(sum%10); sum/=10; } for(int i=ans.size()-1;i>=0;i--) { cout<<ans[i]; if(i%3==0&&i) cout<<","; } } return 0; }1002 A+B for Polynomials (25 分)
分析:where K is the number of nonzero terms in the polynomial, Ni and aNi (i=1,2,⋯,K) are the exponents and coefficients, respectively. It is given that 1≤K≤10,0≤NK<⋯<N2<N1≤1000.
感觉PAT的题表达都很不清楚要靠猜,样例也不会说明,这题如果系数和为0不输出
总结:新单词polynomial———多项式,exponents——指数,coefficient——系数
Time: 16 min 23 s
#include <bits/stdc++.h> using namespace std; typedef long long ll; map<int,double> mp; struct Node { int x; double y; bool operator < (const Node &T) const { return x>T.x; } }pp[25]; int main() { int k,x; double y; scanf("%d",&k); for(int i=1;i<=k;i++) { scanf("%d%lf",&x,&y); mp[x]+=y; } scanf("%d",&k); for(int i=1;i<=k;i++) { scanf("%d%lf",&x,&y); mp[x]+=y; } int cnt=0; map<int,double>::iterator it; for(it=mp.begin();it!=mp.end();it++) { if((*it).second==0) continue; pp[++cnt].x=(*it).first; pp[cnt].y=(*it).second; } sort(pp+1,pp+1+cnt); printf("%d",cnt); for(int i=1;i<=cnt;i++) printf(" %d %.1f",pp[i].x,pp[i].y); return 0; }