1001
#include <iostream>
#include <vector>
#include <iomanip>
#include <math.h>
#include <string>
#include <sstream>
#include <stack>
using namespace std;
int main(){
long long a,b;
cin>>a>>b;
string st;
stringstream ss;
ss<<(a+b);
ss>>st;
int th_count=0;
stack <char> sta;
for (int i=st.size()-1;i>=0;i--){
th_count++;
sta.push(st[i]);
if (i == 0){break;}
if (st[i-1] == '-'){sta.push(st[i-1]);break;}
if (th_count % 3 == 0&&th_count!=0){sta.push(',');}
}
while (!sta.empty()){cout<<sta.top();sta.pop();}
return 0;
}
总结陈词
1、long,int 和string的转化。参考链接。
https://blog.csdn.net/sunxianliang1/article/details/72897045
1002
下面这段代码显示部分正确, 原因未知,得分(17/25)
#include <iostream>
#include <vector>
#include <iomanip>
#include <math.h>
#include <string>
#include <sstream>
#include <stack>
using namespace std;
int main(){
float x;
vector <float> vc1;
vector <float> vc2;
vector <float> result;
int num;
cin>>num;
while(num--){
cin>>x;
vc1.push_back(x);
cin>>x;
vc1.push_back(x);
}
cin>>num;
while(num--){
cin>>x;
vc2.push_back(x);
cin>>x;
vc2.push_back(x);
}
unsigned int length;
if (vc1.size()<vc2.size()){length = vc1.size();}
else {length = vc2.size();}
unsigned int i,j;
i=0;j=0;
unsigned int length_copy = length;
float sum=0;
while(length_copy--){
if(vc1[i]<vc2[j]){result.push_back(vc2[j]);result.push_back(vc2[++j]);j++;sum++;}
else if(vc1[i]>vc2[j]){result.push_back(vc1[i]);result.push_back(vc1[++i]);i++;sum++;}
else{result.push_back(vc1[i]);result.push_back(vc1[++i]+vc2[++j]);i++;j++;sum++;}
if (i == length){while(j<vc2.size()){result.push_back(vc2[j++]);sum+=0.5;}break;}
if (j == length){while(i<vc1.size()){result.push_back(vc1[i++]);;sum+=0.5;}break;}
}
cout<<setiosflags(ios::fixed) << setprecision(0)<<sum;
for (unsigned int i=0;i<result.size();i++){
cout<<' ';
if (i&1)cout<<setiosflags(ios::fixed) << setprecision(1)<<result[i];
else{cout<<setiosflags(ios::fixed) << setprecision(0)<<result[i];}
}
return 0;
}
下面方法来自
https://blog.csdn.net/i_hope_soar/article/details/83064733
#include <iostream>
#include <iomanip>
using namespace std;
double a[1005];
int main(){
int n,k,x,m,count = 0;
double y;
cin>>m;
for(int i = 0; i < m; i++){
cin>>x>>y;
a[x] += y;
}
cin>>m;
for(int i = 0; i < m; i++){
cin>>x>>y;
a[x] += y;
}
for(int i = 0; i < 1001; i++){
if(a[i] != 0) count++;
}
cout<<count;
for(int i = 1001; i >= 0; i--){
if(a[i] != 0){
cout<<" "<<i<<" "<<setiosflags(ios::fixed)<<setprecision(1)<<a[i];
}
}
return 0;
}
总结陈词
1、当如下情况时,++j会优先与cout计算,产生输出错误。
cout<<a[i]<<a[++i];//输出为两个a[i+1]
2、控制小数点位数参考链接
https://www.cnblogs.com/ever17/p/11285358.html
3、没有必要用vector容器,可以直接用数组预定数组空间。虽然有浪费,但是测试能过呀。