1012. 數字分類 (20)
給定一系列正整數,請按要求對數字進行分類,並輸出以下5個數字:
A1 = 能被5整除的數字中所有偶數的和;A2 = 將被5除後餘1的數字按給出順序進行交錯求和,即計算n1-n2+n3-n4...;A3 = 被5除後餘2的數字的個數;A4 = 被5除後餘3的數字的平均數,精確到小數點後1位;A5 = 被5除後餘4的數字中最大數字。輸入格式:
每個輸入包含1個測試用例。每個測試用例先給出一個不超過1000的正整數N,隨後給出N個不超過1000的待分類的正整數。數字間以空格分隔。
輸出格式:
對給定的N個正整數,按題目要求計算A1~A5並在一行中順序輸出。數字間以空格分隔,但行末不得有多餘空格。
若其中某一類數字不存在,則在相應位置輸出“N”。
輸入樣例1:13 1 2 3 4 5 6 7 8 9 10 20 16 18輸出樣例1:
30 11 2 9.7 9輸入樣例2:
8 1 2 4 5 6 7 9 16輸出樣例2:
N 11 2 N 9
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int n,tmp,sign=1;
float a4(0);
int a1(0),a2(0),a3(0),c4(0),a5(0);
bool f1(0),f2(0),f3(0),f4(0),f5(0);
cin>>n;
while(n--){
cin>>tmp;
switch(tmp%5){
case 0:
if(tmp%2==0){
f1=1;
a1+=tmp;
}
break;
case 1:
f2=1;
a2+=sign*tmp;
sign=(-1)*sign;
break;
case 2:
f3=1;
a3++;
break;
case 3:
f4=1;
c4++;
a4+=tmp;
break;
case 4:
f5=1;
if(tmp>a5) a5=tmp;
break;
default:
break;
}
}
if(f1==1) cout<<a1<<" ";
else cout<<"N ";
if(f2==1) cout<<a2<<" ";
else cout<<"N ";
if(f3==1) cout<<a3<<" ";
else cout<<"N ";
if(f4==1) printf("%.1f ",a4/c4);
else cout<<"N ";
if(f5==1) cout<<a5;
else cout<<"N";
return 0;
}
Sume:
在C++的編程中,總會遇到浮點數的處理,有的時候,我們只需要保留2位小數作爲輸出的結果,這時候,問題來了,怎樣才能讓cout輸出指定的小數點後保留位數呢?
在C語言的編程中,我們可以這樣實現它:
- printf("%.2f", sample);
想要使用setprecision()函數,必須包含頭文件#include <iomanip>。使用方式如下:
- cout << "a=" << setprecision(2) << a <<endl;
如果我們想要讓它自動補0,需要在cout之前進行補0的定義。代碼如下:
- cout.setf(ios::fixed);
- cout << "a=" <<fixed<< setprecision(2) << a <<endl; //輸出a=0.20
- cout.unsetf(ios::fixed);
- cout << "a=" << setprecision(2) << a <<endl; //輸出a=0.2