Given a positive integer n, round it to nearest whole number having zero as last digit.
Examples:
Input : 4722 Output : 4720 Input : 38 Output : 40 Input : 10 Output: 10
Approach:
Let's round down the given number n to the nearest integer which ends with 0 and store this value in a variable a. a = (n / 10) * 10. So, the round up n (call it b) is b = a + 10. If n - a > b - n then the answer is b otherwise the answer is a.
Below is the implementation of the above approach:
C++
// C++ program to round the given // integer to a whole number // which ends with zero. #include <bits/stdc++.h> using namespace std;
// function to round the number int round( int n)
{ // Smaller multiple
int a = (n / 10) * 10;
// Larger multiple
int b = a + 10;
// Return of closest of two
return (n - a > b - n)? b : a;
} // driver function int main()
{ int n = 4722;
cout << round(n) << endl;
return 0;
} |
Java
// Java Code for Round the given number // to nearest multiple of 10 import java.util.*;
class GFG {
// function to round the number
static int round( int n)
{
// Smaller multiple
int a = (n / 10 ) * 10 ;
// Larger multiple
int b = a + 10 ;
// Return of closest of two
return (n - a > b - n)? b : a;
}
/* Driver program to test above function */
public static void main(String[] args)
{
int n = 4722 ;
System.out.println(round(n));
}
} // This code is contributed by Arnav Kr. Mandal. |
Python3
# Python3 code to round the given # integer to a whole number # which ends with zero. # function to round the number def round ( n ):
# Smaller multiple
a = (n / / 10 ) * 10
# Larger multiple
b = a + 10
# Return of closest of two
return (b if n - a > b - n else a)
# driver code n = 4722
print ( round (n))
# This code is contributed by "Sharad_Bhardwaj". |
C#
// C# Code for Round the given number // to nearest multiple of 10 using System;
class GFG {
// function to round the number
static int round( int n)
{
// Smaller multiple
int a = (n / 10) * 10;
// Larger multiple
int b = a + 10;
// Return of closest of two
return (n - a > b - n)? b : a;
}
// Driver program
public static void Main()
{
int n = 4722;
Console.WriteLine(round(n));
}
} // This code is contributed by Vt_m. |
PHP
<?php // PHP program to round the given integer // to a whole number which ends with zero. // function to round the number function roundFunation( $n )
{ // Smaller multiple
$a = (int)( $n / 10) * 10;
// Larger multiple
$b = ( $a + 10);
// Return of closest of two
return ( $n - $a > $b - $n ) ? $b : $a ;
} // Driver Code $n = 4722;
echo roundFunation( $n ), "\n" ;
// This code is contributed by ajit ?> |
Javascript
<script> // Javascript Code for Round the given number
// to nearest multiple of 10
// function to round the number
function round(n)
{
// Smaller multiple
let a = parseInt(n / 10, 10) * 10;
// Larger multiple
let b = a + 10;
// Return of closest of two
return (n - a > b - n)? b : a;
}
let n = 4722;
document.write(round(n));
// THIS CODE IS CONTRIBUTED BY MUKESH07.
</script> |
Output
4720
Time Complexity: O(1)
Auxiliary Space: O(1)
Another method if n is large:
The above method is good only for Integer or Long MAX value. if the input length is greater than the integer or long-range above method does not work.
We can solve the problem using String.
C++
// C++ code for above approach #include <bits/stdc++.h> using namespace std;
// Program to round the number to the // nearest number having one's digit 0 string Round(string s, int n)
{ string c = s;
// last character is 0 then return the
// original string
if (c[n - 1] == '0' )
return s;
// if last character is
// 1 or 2 or 3 or 4 or 5 make it 0
else if (c[n - 1] == '1' || c[n - 1] == '2' ||
c[n - 1] == '3' || c[n - 1] == '4' ||
c[n - 1] == '5' )
{
c[n - 1] = '0' ;
return c;
}
else
{
c[n - 1] = '0' ;
// process carry
for ( int i = n - 2 ; i >= 0 ; i--)
{
if (c[i] == '9' )
c[i] = '0' ;
else
{
int t = c[i] - '0' + 1;
c[i] = ( char )(48 + t);
break ;
}
}
}
string s1 = c;
if (s1[0] == '0' )
s1 = "1" + s1;
// return final string
return s1;
} // Driver code int main()
{ string s= "5748965412485599999874589965999" ;
int n=s.length();
// Function Call
cout << Round(s,n) << endl;
return 0;
} // This code is contributed by divyeshrabadiya07 |
Java
// Java code for above approach import java.io.*;
class GFG
{ // Program to round the number to the
// nearest number having one's digit 0
public static String round(String s, int n)
{
char [] c=s.toCharArray();
// last character is 0 then return the
// original string
if (c[n- 1 ]== '0' )
return s;
// if last character is
// 1 or 2 or 3 or 4 or 5 make it 0
else if (c[n- 1 ] == '1' || c[n- 1 ] == '2' ||
c[n- 1 ] == '3' || c[n- 1 ] == '4' ||
c[n- 1 ] == '5' )
{
c[n- 1 ]= '0' ;
return new String(c);
}
else
{
c[n- 1 ]= '0' ;
// process carry
for ( int i = n - 2 ; i >= 0 ; i--)
{
if (c[i] == '9' )
c[i]= '0' ;
else
{
int t= c[i] - '0' + 1 ;
c[i]=( char )( 48 +t);
break ;
}
}
}
String s1= new String(c);
if (s1.charAt( 0 ) == '0' )
s1= "1" +s1;
// return final string
return s1;
}
// Driver Code
public static void main (String[] args)
{
String s= "5748965412485599999874589965999" ;
int n=s.length();
// Function Call
System.out.println(round(s,n));
}
} |
Python3
# Python3 code for above approach # Function to round the number to the # nearest number having one's digit 0 def Round (s, n):
s = list (s)
c = s.copy()
# Last character is 0 then return the
# original string
if (c[n - 1 ] = = '0' ):
return ("".join(s))
# If last character is
# 1 or 2 or 3 or 4 or 5 make it 0
elif (c[n - 1 ] = = '1' or c[n - 1 ] = = '2' or c[n - 1 ] = = '3' or c[n - 1 ] = = '4' or c[n - 1 ] = = '5' ):
c[n - 1 ] = '0'
return ("".join(c))
else :
c[n - 1 ] = '0'
# Process carry
for i in range (n - 2 , - 1 , - 1 ):
if (c[i] = = '9' ):
c[i] = '0'
else :
t = ord (c[i]) - ord ( '0' ) + 1
c[i] = chr ( 48 + t)
break
s1 = "".join(c)
if (s1[ 0 ] = = '0' ):
s1 = "1" + s1
# Return final string
return s1
# Driver code s = "5748965412485599999874589965999"
n = len (s)
print ( Round (s, n))
# This code is contributed by rag2127 |
C#
// C# code for above approach using System;
class GFG {
// Program to round the number to the
// nearest number having one's digit 0
static string round( string s, int n)
{
char [] c = s.ToCharArray();
// last character is 0 then return the
// original string
if (c[n - 1] == '0' )
return s;
// if last character is
// 1 or 2 or 3 or 4 or 5 make it 0
else if (c[n - 1] == '1' || c[n - 1] == '2' ||
c[n - 1] == '3' || c[n - 1] == '4' ||
c[n - 1] == '5' )
{
c[n - 1] = '0' ;
return new string (c);
}
else
{
c[n - 1] = '0' ;
// process carry
for ( int i = n - 2 ; i >= 0 ; i--)
{
if (c[i] == '9' )
c[i] = '0' ;
else
{
int t = c[i] - '0' + 1;
c[i] = ( char )(48 + t);
break ;
}
}
}
string s1 = new string (c);
if (s1[0] == '0' )
s1 = "1" + s1;
// return final string
return s1;
}
static void Main() {
string s= "5748965412485599999874589965999" ;
int n=s.Length;
// Function Call
Console.WriteLine(round(s,n));
}
} // This code is contributed by divyesh072019 |
Javascript
<script> // Javascript code for above approach // Program to round the number to the // nearest number having one's digit 0 function round(s, n)
{ let c = s.split(' ');
// Last character is 0 then return the
// original string
if (c[n - 1] == ' 0 ')
return s;
// If last character is
// 1 or 2 or 3 or 4 or 5 make it 0
else if (c[n - 1] == ' 1 ' || c[n - 1] == ' 2 ' ||
c[n - 1] == ' 3 ' || c[n - 1] == ' 4 ' ||
c[n - 1] == ' 5 ' )
{
c[n - 1] = ' 0 ';
return c.join("");
}
else
{
c[n - 1] = ' 0 ';
// process carry
for(let i = n - 2 ; i >= 0 ; i--)
{
if (c[i] == ' 9 ')
c[i] = ' 0 ';
else
{
let t = c[i].charCodeAt() -
' 0 '.charCodeAt() + 1;
c[i] = String.fromCharCode(48 + t);
break;
}
}
}
let s1 = c.join("");
if (s1[0] == ' 0')
s1 = "1" + s1;
// Return final string
return s1;
} // Driver code let s = "5748965412485599999874589965999" ;
let n = s.length; // Function Call document.write(round(s,n)); // This code is contributed by rameshtravel07 </script> |
Output
5748965412485599999874589966000
Time Complexity: O(N) where N is length of string.
Auxiliary Space: O(1)