Given N and Standard deviation find the N elements.
Mean is average of element.
Mean of arr[0..n-1] = ?(arr[i]) / n
where 0 <= i < n
Variance is sum of squared differences from the mean divided by number of elements.
Variance = ?(arr[i] – mean)2 / n
Standard Deviation is square root of variance
Standard Deviation = ?(variance)
Please refer Mean, Variance and Standard Deviation for details.
Examples:
Input: 6 0 Output: 0 0 0 0 0 0 Explanation: The standard deviation of 0, 0, 0, 0, 0, 0 is 0. Also the standard deviation of 4, 4, 4, 4, 4, 4 is 0, we print any of the possible N elements. Input: 3 3 Output: 0 -3.67423 3.67423 Explanation: On calculating SD of these N elements, we get standard deviation to be 3.
Approach:
If we look at the formula, we have two unknown terms one is xi and the other is mean. The main motive is to make the mean 0 so that we can get the formula for X elements. There will be two cases, one for even and one for odd.
When N is even:
To make mean of N elements 0, best way is to express N elements as -X +X -X +X …. Formula will be sqrt(summation of (x^2)/n), x2+x^2+x^2+………N terms, so formula turns out to be sqrt (N*(x^2)/N). N cancel out each other, so sqrt (x^2) turns out to be SD. So, we get the N elements as -SD +SD -SD +SD…… to get the mean 0. We need to print -SD +SD -SD +SD……
When N is odd:
The mean of N elements will be 0. So, one element will be 0 and other N-1 elements will be -X +X -X …. Formula will be sqrt(summation of (x^2)/n), x2+x^2+x^2+………N-1 terms, so formula turns out to be sqrt((N-1)*(x^2)/N), so
X= SD * sqrt(n/(n-1)). The n elements are 0 -X +X -X +X …
When SD is 0 then all elements will be same, so we can print 0 for it.
Below is the implementation of the above approach:
// CPP program to find n elements #include <bits/stdc++.h> using namespace std;
// function to print series of n elements void series( int n, int d)
{ // if S.D. is 0 then print all
// elements as 0.
if (d == 0) {
// print n 0's
for ( int i = 0; i < n; i++)
cout << "0 " ;
cout << endl;
return ;
}
// if S.D. is even
if (n % 2 == 0) {
// print -SD, +SD, -SD, +SD
for ( int i = 1; i <= n; i++) {
cout << pow (-1, i) * d << " " ;
}
cout << endl;
}
else // if odd
{
// convert n to a float integer
float m = n;
float r = (m / (m - 1));
float g = ( float )(d * ( float )sqrtf(r));
// print one element to be 0
cout << "0 " ;
// print (n-1) elements as xi derived
// from the formula
for ( int i = 1; i < n; i++) {
cout << pow (-1, i) * g << " " ;
}
cout << endl;
}
} // driver program to test the above function int main()
{ int n = 3, d = 3;
series(n, d);
return 0;
} |
// Java program to find n elements import java.util.*;
import java.lang.*;
public class GfG {
// function to print series of n elements
public static void series( int n, int d)
{
// if S.D. is 0 then print all
// elements as 0.
if (d == 0 ) {
// print n 0's
for ( int i = 0 ; i < n; i++)
System.out.print( "0 " );
System.out.println();
return ;
}
// if S.D. is even
if (n % 2 == 0 ) {
// print -SD, +SD, -SD, +SD
for ( int i = 1 ; i <= n; i++) {
System.out.print(Math.pow(- 1 , i) * d + " " );
}
System.out.println();
}
else // if odd
{
// convert n to a float integer
float m = n;
float r = (m / (m - 1 ));
float g = ( float )(d * ( float )(Math.sqrt(r)));
// print one element to be 0
System.out.print( "0 " );
// print (n-1) elements as xi
// derived from the formula
for ( int i = 1 ; i < n; i++) {
System.out.print(Math.pow(- 1 , i) * g + " " );
}
System.out.println();
}
}
// driver function
public static void main(String args[])
{
int n = 3 , d = 3 ;
series(n, d);
}
} /* This code is contributed by Sagar Shukla */ |
# Python program to find n elements import math
# function to print series of n elements def series( n, d):
# if S.D. is 0 then print all
# elements as 0.
if d = = 0 :
# print n 0's
for i in range (n):
print ( "0" , end = ' ' )
return 1
# if S.D. is even
if n % 2 = = 0 :
# print -SD, +SD, -SD, +SD
i = 1
while i < = n:
print ( "%.5f" % ((math. pow ( - 1 , i) * d)),
end = ' ' )
i + = 1
else :
# if odd
# convert n to a float integer
m = n
r = (m / (m - 1 ))
g = ( float )(d * float (math.sqrt(r)))
# print one element to be 0
print ( "0 " , end = ' ' )
# print (n-1) elements as xi derived
# from the formula
i = 1
while i < n:
print ( "%.5f" % (math. pow ( - 1 , i) * g),
end = ' ' )
i = i + 1
print ( "\n" )
# driver code to test the above function n = 3
d = 3
series(n, d) # This code is contributed by "Sharad_Bhardwaj". |
// C# program to find n elements using System;
public class GfG {
// function to print series of n
// elements
public static void series( int n, int d)
{
// if S.D. is 0 then print all
// elements as 0.
if (d == 0) {
// print n 0's
for ( int i = 0; i < n; i++)
Console.Write( "0" );
Console.WriteLine();
return ;
}
// if S.D. is even
if (n % 2 == 0) {
// print -SD, +SD, -SD, +SD
for ( int i = 1; i <= n; i++) {
Console.Write(Math.Pow(-1, i)
* d + " " );
}
Console.WriteLine();
}
else // if odd
{
// convert n to a float integer
float m = n;
float r = (m / (m - 1));
float g = ( float )(d *
( float )(Math.Sqrt(r)));
// print one element to be 0
Console.Write( "0 " );
// print (n-1) elements as xi
// derived from the formula
for ( int i = 1; i < n; i++) {
Console.Write(Math.Pow(-1, i)
* g + " " );
}
Console.WriteLine();
}
}
// driver function
public static void Main()
{
int n = 3, d = 3;
series(n, d);
}
} // This code is contributed by vt_m. |
<?php // PHP program to find n elements // function to print // series of n elements function series( $n , $d )
{ // if S.D. is 0 then print all
// elements as 0.
if ( $d == 0)
{
// print n 0's
for ( $i = 0; $i < $n ; $i ++)
echo "0 " ;
echo "\n" ;
return ;
}
// if S.D. is even
if ( $n % 2 == 0)
{
// print -SD, +SD, -SD, +SD
for ( $i = 1; $i <= $n ; $i ++)
{
echo pow(-1, $i ) * $d , " " ;
}
echo "\n" ;
}
// if odd
else
{
// convert n to a
// float integer
$m = $n ;
$r = ( $m / ( $m - 1));
$g = ( $d * sqrt( $r ));
// print one element
// to be 0
echo "0 " ;
// print (n-1) elements
// as xi derived
// from the formula
for ( $i = 1; $i < $n ; $i ++)
{
echo pow(-1, $i ) * $g , " " ;
}
echo "\n" ;
}
} // Driver Code
$n = 3; $d = 3;
series( $n , $d );
// This code is contributed by anuj_67. ?> |
<script> // JavaScript program to find n elements // Function to print series of n elements function series(n, d)
{ // If S.D. is 0 then print all
// elements as 0.
if (d == 0)
{
// Print n 0's
for (let i = 0; i < n; i++)
document.write( "0 " );
document.write();
return ;
}
// If S.D. is even
if (n % 2 == 0)
{
// Print -SD, +SD, -SD, +SD
for (let i = 1; i <= n; i++)
{
document.write(Math.pow(-1, i) * d + " " );
}
document.write();
}
// If odd
else
{
// Convert n to a float integer
let m = n;
let r = (m / (m - 1));
let g = (d * (Math.sqrt(r)));
// Print one element to be 0
document.write( "0 " );
// Print (n-1) elements as xi
// derived from the formula
for (let i = 1; i < n; i++)
{
document.write(Math.pow(-1, i) * g + " " );
}
document.write();
}
} // Driver Code let n = 3, d = 3; series(n, d); // This code is contributed by susmitakundugoaldanga </script> |
Output:
0 -3.67423 3.67423
Time Complexity: O(N), as we are using a loop to traverse N times.
Auxiliary Space: O(1), as we are not using any extra space.