Find a time for which angle between hour and minute hands is given theta
Last Updated :
16 Feb, 2023
Given angle theta, find a possible time (in hh:mm format) when angle between hour hand and clock hand is theta. If no such time exists then print -1.
Examples :
Input : theta = 90.0
Output : 3:0
Input : theta = 60.0
Output : 2:0
We have discussed how to find angle for given time in below post.
Calculate the angle between hour hand and minute hand
In this problem, we are asked to do reverse. Since there are 12 possibilities for hour and 60 possibilities for minute, we loop through all possible time which is 12*60 = 720, if angle for any time is equal to given theta then we print that time.
C++
#include <bits/stdc++.h>
using namespace std;
float calcAngle( int hh, int mm)
{
float hour_angle = 0.5 * (hh*60 + mm);
float minute_angle = 6*mm;
float angle = abs (hour_angle - minute_angle);
angle = min(360-angle, angle);
return angle;
}
void printTime( float theta)
{
for ( int hh=0; hh<12; hh++)
{
for ( int mm=0; mm<60; mm++)
{
if (calcAngle(hh, mm)==theta)
{
printf ( "%d:%d\n" , hh, mm);
return ;
}
}
}
printf ( "Input angle not valid.\n" );
return ;
}
int main()
{
float theta = 90.0;
printTime(theta);
return 0;
}
|
Java
class GFG
{
static float calcAngle( int hh, int mm)
{
float hour_angle = 0 .5f * (hh * 60 + mm);
float minute_angle = 6 * mm;
float angle = Math.abs(hour_angle - minute_angle);
angle = Math.min( 360 -angle, angle);
return angle;
}
static void printTime( float theta)
{
for ( int hh = 0 ; hh < 12 ; hh++)
{
for ( int mm = 0 ; mm < 60 ; mm++)
{
if (calcAngle(hh, mm) == theta)
{
System.out.println(hh + ":" + mm);
return ;
}
}
}
System.out.println( "Input angle not valid." );
return ;
}
public static void main (String[] args)
{
float theta = 90 .0f;
printTime(theta);
}
}
|
Python3
def calcAngle(hh, mm):
hour_angle = 0.5 * (hh * 60 + mm)
minute_angle = 6 * mm
angle = abs (hour_angle - minute_angle)
angle = min ( 360 - angle, angle)
return angle
def printTime(theta):
for hh in range ( 0 , 12 ):
for mm in range ( 0 , 60 ):
if (calcAngle(hh, mm) = = theta):
print (hh, ":" , mm, sep = "")
return
print ( "Input angle not valid." )
return
theta = 90.0
printTime(theta)
|
C#
using System;
class GFG {
static float calcAngle( int hh, int mm)
{
float hour_angle = 0.5f * (hh * 60 + mm);
float minute_angle = 6 * mm;
float angle = Math.Abs(hour_angle
- minute_angle);
angle = Math.Min(360 - angle, angle);
return angle;
}
static void printTime( float theta)
{
for ( int hh = 0; hh < 12; hh++)
{
for ( int mm = 0; mm < 60; mm++)
{
if (calcAngle(hh, mm) == theta)
{
Console.WriteLine(hh + ":" + mm);
return ;
}
}
}
Console.WriteLine( "Input angle not valid." );
return ;
}
public static void Main ()
{
float theta = 90.0f;
printTime(theta);
}
}
|
PHP
<?php
function calcAngle( $hh , $mm )
{
$hour_angle = 0.5 * ( $hh * 60 + $mm );
$minute_angle = 6 * $mm ;
$angle = abs ( $hour_angle -
$minute_angle );
$angle = min(360 - $angle , $angle );
return $angle ;
}
function printTime( $theta )
{
for ( $hh = 0; $hh < 12; $hh ++)
{
for ( $mm = 0; $mm < 60; $mm ++)
{
if (calcAngle( $hh , $mm ) == $theta )
{
echo $hh , ":" , $mm ;
return ;
}
}
}
echo "Input angle not valid.\n" ;
return ;
}
$theta = 90.0;
printTime( $theta );
?>
|
Javascript
<script>
function calcAngle(hh, mm)
{
var hour_angle = 0.5 * (hh * 60 + mm);
var minute_angle = 6 * mm;
var angle = Math.abs(hour_angle - minute_angle);
angle = Math.min(360 - angle, angle);
return angle;
}
function printTime(theta) {
for ( var hh = 0; hh < 12; hh++)
{
for ( var mm = 0; mm < 60; mm++)
{
if (calcAngle(hh, mm) === theta)
{
document.write(hh + ":" + mm + "<br>" );
return ;
}
}
}
document.write( "Input angle not valid.<br>" );
return ;
}
var theta = 90.0;
printTime(theta);
</script>
|
Output :
3:0
Time Complexity : O(1)
Auxiliary Space : O(1)
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...