问题 K: 数组的归一化
时间限制: 1 Sec 内存限制: 128 MB提交: 1633 解决: 49
[ 提交][ 状态]
题目描述
对于给定的一个由非负的int类型的整数组成的数组,归一化是指将每个元素除以数组元素之和。比如:给定一个数组1 2 3 4,那么归一化之后是0.10 0.20 0.30 0.40,即每个元素值除以10(数组元素之和)。
现在,给定一个由若干个非负整数组成的数组,输出其归一化之后的结果。输出时保留2位小数且两两之间用一个空格隔开。假定数组至少有1个元素,且数组元素之和不超过int类型的表示范围。
输入
若干个int类型范围内的整数。
输出
按照要求输出归一化后的结果。
样例输入
1 2 3 4
样例输出
0.10 0.20 0.30 0.40
#include <stdio.h>
#include <iomanip>
#include <typeinfo>
#include <cmath>
#include <math.h>
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <string>
using namespace std;
int main()
{
vector<double> v;
double a=0;
double sum=0;
int x=0;
while(cin >> a){
v.push_back(a);
sum += a;
//if(x++ >=3) break;
}
//if(sum==0) sum = 1.0;
for(int i=0; i<v.size(); i++)
{
if(i) printf(" ");
if(v[i]==0.0 && sum==0.0) printf("1.00");
else printf("%.2f",v[i]/sum);
}
return 0;
}