**
PAT初级1012 数字分类 (C++)
**
思路:
对数字分类后按分支处理,特别注意A2,交错求和可能会导致和为0(后续判断是否有数字可能会受影响,不绝对)
C++的按精度输出需注意
代码:
# include <iostream>
#include <iomanip>
# include <cmath>
using namespace std;
int main()
{
int N=0,number=0;
cin>>N;
int re[5]={0,0,0,0,0};
int k=0;
float re4=0.0;
float sum =0 ;
for(int i=0;i<N;i++)
{
cin>>number;
if(number%10==0)
{
re[0] = number + re[0];
}
else if(number%5==1)
{
k++;
re[1] = number*powf(-1,k-1)+re[1];
}
else if(number%5==2)
{
re[2] = re[2]+1;
}
else if(number%5==3)
{
re[3] = re[3]+1;
sum = sum + number;
re4 = sum/re[3];
}
else if(number%5==4)
{
if(number>re[4])
{
re[4]=number;
}
}
number = 0;
}
int j=0;
while(j<4)
{
if(re[j])
{
if(j==3)
{
cout << setiosflags(ios::fixed) << setprecision(1) << std::fixed << re4<<" ";
}
else
{
cout<<re[j]<<" ";
}
}
else if(j==1&&k)
{
cout<<re[j]<<" ";
}
else
{
cout<<"N ";
}
j++;
}
if(re[4])
{
cout<<re[4];
}
else
{
cout<<"N";
}
return 0;
}
结果:
PLUS:
代码可以更简洁,减少重复
相关知识(搬运):
C++精度控制:
https://blog.youkuaiyun.com/weixin_45494811/article/details/104471464?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_default&utm_relevant_index=2
其它求解方案(本题):
https://blog.youkuaiyun.com/dulongxiang/article/details/97368951?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_antiscanv2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_antiscanv2&utm_relevant_index=2