Find N values of X1, X2, … Xn such that X1 < X2 < … < XN and sin(X1) < sin(X2) < … < sin(XN)
Given a number N, the task is to find the N integer values of Xi such that X1 < X2 < … < XN and sin(X1) < sin(X2) < … < sin(XN).
Examples:
Input: N = 5
Output:
X1 = 0 sin(X1) = 0.000000
X2 = 710 sin(X2) = 0.000060
X3 = 1420 sin(X3) = 0.000121
X4 = 2130 sin(X4) = 0.000181
X5 = 2840 sin(X5) = 0.000241
Input: N = 3
Output:
X1 = 0 sin(X1) = 0.000000
X2 = 710 sin(X2) = 0.000060
X3 = 1420 sin(X3) = 0.000121
Approach: The idea is to use the fractional value of PI(&PI); i.e., Pi = 355/113 as it given best rational value of PI of accuracy being 0.000009%.
As,
PI = 355/113
=> 113*PI = 355
=> 2*(113*PI) = 710
As sin() function has a period of 2*PI,
Therefore sin(2*k*PI + Y) = sin(Y);
As per the above equation to get the value X1 < X2 < … < XN and sin(X1) < sin(X2) < … < sin(XN) we must find the value of sin(X) with an increment of 710.
Below is the implementation of the above approach:
C++
#include <bits/stdc++.h>
using namespace std;
void printSinX( int N)
{
int Xi = 0;
int num = 1;
while (N--) {
cout << "X" << num << " = " << Xi;
cout << " sin(X" << num << ") = "
<< fixed;
cout << setprecision(6)
<< sin (Xi) << endl;
num += 1;
Xi += 710;
}
}
int main()
{
int N = 5;
printSinX(N);
return 0;
}
|
Java
import java.util.*;
class GFG{
static void printSinX( int N)
{
int Xi = 0 ;
int num = 1 ;
while (N-- > 0 )
{
System.out.print( "X" + num + " = " + Xi);
System.out.print( " sin(X" + num + ") = " );
System.out.printf( "%.6f" , Math.sin(Xi));
System.out.println();
num += 1 ;
Xi += 710 ;
}
}
public static void main(String[] args)
{
int N = 5 ;
printSinX(N);
}
}
|
Python3
import math
def printSinX(N):
Xi = 0 ;
num = 1 ;
while (N > 0 ):
print ( "X" , num, "=" , Xi, end = " " );
print ( "sin(X" , num, ") =" , end = " " );
print ( "{:.6f}" . format (math.sin(Xi)), "\n" );
num + = 1 ;
Xi + = 710 ;
N = N - 1 ;
N = 5 ;
printSinX(N)
|
C#
using System;
class GFG{
static void printSinX( int N)
{
int Xi = 0;
int num = 1;
while (N-- > 0)
{
Console.Write( "X" + num + " = " + Xi);
Console.Write( " sin(X" + num + ") = " );
Console.Write( "{0:F6}" , Math.Sin(Xi));
Console.WriteLine();
num += 1;
Xi += 710;
}
}
public static void Main(String[] args)
{
int N = 5;
printSinX(N);
}
}
|
Javascript
<script>
function printSinX(N)
{
let Xi = 0;
let num = 1;
while (N-- > 0)
{
document.write( "X" + num + " = " + Xi);
document.write( " sin(X" + num + ") = " );
document.write(Math.sin(Xi).toFixed(6));
document.write( "<br/>" );
num += 1;
Xi += 710;
}
}
let N = 5;
printSinX(N);
</script>
|
Output
X1 = 0 sin(X1) = 0.000000
X2 = 710 sin(X2) = 0.000060
X3 = 1420 sin(X3) = 0.000121
X4 = 2130 sin(X4) = 0.000181
X5 = 2840 sin(X5) = 0.000241
Time Complexity: O(N)
Auxiliary Space: O(1)
Last Updated :
01 Nov, 2023
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...