给定一个数字N ,任务是找到一个数字在偶数和奇数位的数字之和。
例子:
Input: N = 54873
Output:
Sum odd = 16
Sum even = 11
Input: N = 457892
Output:
Sum odd = 20
Sum even = 15
方法:
- 首先,计算给定数字的倒数。
- 对于倒数,我们应用模数运算符并提取其最后一位数字,这实际上是数字的第一位数字,因此它是奇数位数字。
- 下一个数字将是偶数定位数字,我们可以交替轮流求和。
下面是上述方法的实现:
C++
// C++ implementation of the approach
#include
using namespace std;
// Function to return the reverse of a number
int reverse(int n)
{
int rev = 0;
while (n != 0) {
rev = (rev * 10) + (n % 10);
n /= 10;
}
return rev;
}
// Function to find the sum of the odd
// and even positioned digits in a number
void getSum(int n)
{
n = reverse(n);
int sumOdd = 0, sumEven = 0, c = 1;
while (n != 0) {
// If c is even number then it means
// digit extracted is at even place
if (c % 2 == 0)
sumEven += n % 10;
else
sumOdd += n % 10;
n /= 10;
c++;
}
cout << "Sum odd = " << sumOdd << "\n";
cout << "Sum even = " << sumEven;
}
// Driver code
int main()
{
int n = 457892;
getSum(n);
return 0;
}
Java
// Java implementation of the approach
import java.util.*;
class GFG {
// Function to return the reverse of a number
static int reverse(int n)
{
int rev = 0;
while (n != 0) {
rev = (rev * 10) + (n % 10);
n /= 10;
}
return rev;
}
// Function to find the sum of the odd
// and even positioned digits in a number
static void getSum(int n)
{
n = reverse(n);
int sumOdd = 0, sumEven = 0, c = 1;
while (n != 0) {
// If c is even number then it means
// digit extracted is at even place
if (c % 2 == 0)
sumEven += n % 10;
else
sumOdd += n % 10;
n /= 10;
c++;
}
System.out.println("Sum odd = " + sumOdd);
System.out.println("Sum even = " + sumEven);
}
// Driver code
public static void main(String args[])
{
int n = 457892;
getSum(n);
}
}
// This code is contributed by
// Surendra_Gangwar
Python3
# Python3 implementation of the approach
# Function to return the
# reverse of a number
def reverse(n):
rev = 0
while (n != 0):
rev = (rev * 10) + (n % 10)
n //= 10
return rev
# Function to find the sum of the odd
# and even positioned digits in a number
def getSum(n):
n = reverse(n)
sumOdd = 0
sumEven = 0
c = 1
while (n != 0):
# If c is even number then it means
# digit extracted is at even place
if (c % 2 == 0):
sumEven += n % 10
else:
sumOdd += n % 10
n //= 10
c += 1
print("Sum odd =", sumOdd)
print("Sum even =", sumEven)
# Driver code
n = 457892
getSum(n)
# This code is contributed
# by mohit kumar
C#
// C# implementation of the approach
using System;
class GFG {
// Function to return the reverse of a number
static int reverse(int n)
{
int rev = 0;
while (n != 0) {
rev = (rev * 10) + (n % 10);
n /= 10;
}
return rev;
}
// Function to find the sum of the odd
// and even positioned digits in a number
static void getSum(int n)
{
n = reverse(n);
int sumOdd = 0, sumEven = 0, c = 1;
while (n != 0) {
// If c is even number then it means
// digit extracted is at even place
if (c % 2 == 0)
sumEven += n % 10;
else
sumOdd += n % 10;
n /= 10;
c++;
}
Console.WriteLine("Sum odd = " + sumOdd);
Console.WriteLine("Sum even = " + sumEven);
}
// Driver code
public static void Main()
{
int n = 457892;
getSum(n);
}
}
// This code is contributed by
// Akanksha Rai
PHP
Javascript
C++
// C++ implementation of the approach
#include
using namespace std;
// Function to find the sum of the odd
// and even positioned digits in a number
void getSum(int n)
{
// If n is odd then the last digit
// will be odd positioned
bool isOdd = (n % 2 == 1) ? true : false;
// To store the respective sums
int sumOdd = 0, sumEven = 0;
// While there are digits left process
while (n != 0) {
// If current digit is odd positioned
if (isOdd)
sumOdd += n % 10;
// Even positioned digit
else
sumEven += n % 10;
// Invert state
isOdd = !isOdd;
// Remove last digit
n /= 10;
}
cout << "Sum odd = " << sumOdd << "\n";
cout << "Sum even = " << sumEven;
}
// Driver code
int main()
{
int n = 457892;
getSum(n);
return 0;
}
Java
// Java implementation of the above approach
class GFG{
// Function to find the sum of the odd
// and even positioned digits in a number
static void getSum(int n)
{
// If n is odd then the last digit
// will be odd positioned
boolean isOdd = (n % 2 == 1) ? true : false;
// To store the respective sums
int sumOdd = 0, sumEven = 0;
// While there are digits left process
while (n != 0)
{
// If current digit is odd positioned
if (isOdd)
sumOdd += n % 10;
// Even positioned digit
else
sumEven += n % 10;
// Invert state
isOdd = !isOdd;
// Remove last digit
n /= 10;
}
System.out.println("Sum odd = " + sumOdd);
System.out.println("Sum even = " + sumEven);
}
// Driver code
public static void main(String[] args)
{
int n = 457892;
getSum(n);
}
}
// This code is contributed by jrishabh99
Python3
# Python3 implementation of the approach
# Function to find the sum of the odd
# and even positioned digits in a number
def getSum(n):
# If n is odd then the last digit
# will be odd positioned
if (n % 2 == 1) :
isOdd = True
else:
isOdd = False
# To store the respective sums
sumOdd = 0
sumEven = 0
# While there are digits left process
while (n != 0) :
# If current digit is odd positioned
if (isOdd):
sumOdd += n % 10
# Even positioned digit
else:
sumEven += n % 10
# Invert state
isOdd = not isOdd
# Remove last digit
n //= 10
print( "Sum odd = " , sumOdd )
print("Sum even = " ,sumEven)
# Driver code
if __name__ =="__main__":
n = 457892
getSum(n)
# This code is contributed by chitranayal
C#
// C# implementation of the above approach
using System;
class GFG{
// Function to find the sum of the odd
// and even positioned digits in a number
static void getSum(int n)
{
// If n is odd then the last digit
// will be odd positioned
bool isOdd = (n % 2 == 1) ? true : false;
// To store the respective sums
int sumOdd = 0, sumEven = 0;
// While there are digits left process
while (n != 0)
{
// If current digit is odd positioned
if (isOdd)
sumOdd += n % 10;
// Even positioned digit
else
sumEven += n % 10;
// Invert state
isOdd = !isOdd;
// Remove last digit
n /= 10;
}
Console.WriteLine("Sum odd = " + sumOdd);
Console.Write("Sum even = " + sumEven);
}
// Driver code
static public void Main ()
{
int n = 457892;
getSum(n);
}
}
// This code is contributed by offbeat
Javascript
C++
// C++ implementation of the approach
#include
using namespace std;
// Function to find the sum of the odd
// and even positioned digits in a number
void getSum(int n)
{
// To store the respective sums
int sumOdd = 0, sumEven = 0;
// Converting integer to string
string num = to_string(n);
// Traversing the string
for(int i = 0; i < num.size(); i++)
{
if (i % 2 == 0)
sumOdd = sumOdd + (int(num[i]) - 48);
else
sumEven = sumEven + (int(num[i]) - 48);
}
cout << "Sum odd = " << sumOdd << "\n";
cout << "Sum even = " << sumEven << "\n";
}
// Driver code
int main()
{
int n = 457892;
getSum(n);
return 0;
}
// This code is contributed by souravmahato348
Java
// Java implementation of the approach
import java.util.*;
class GFG{
static void getSum(int n)
{
// To store the respective sum
int sumOdd = 0;
int sumEven = 0;
// Converting integer to String
String num = String.valueOf(n);
// Traversing the String
for(int i = 0; i < num.length(); i++)
if (i % 2 == 0)
sumOdd = sumOdd + (num.charAt(i) - '0');
else
sumEven = sumEven + (num.charAt(i) - '0');
System.out.println("Sum odd = " + sumOdd);
System.out.println("Sum even = " + sumEven);
}
// Driver code
public static void main(String[] args)
{
int n = 457892;
getSum(n);
}
}
// Code contributed by swarnalii
Python3
# Python3 implementation of the approach
# Function to find the sum of the odd
# and even positioned digits in a number
def getSum(n):
# To store the respective sums
sumOdd = 0
sumEven = 0
# Converting integer to string
num = str(n)
# Traversing the string
for i in range(len(num)):
if(i % 2 == 0):
sumOdd = sumOdd+int(num[i])
else:
sumEven = sumEven+int(num[i])
print("Sum odd = ", sumOdd)
print("Sum even = ", sumEven)
# Driver code
if __name__ == "__main__":
n = 457892
getSum(n)
# This code is contributed by vikkycirus
C#
// C# implementation of the approach
using System;
class GFG{
static void getSum(int n)
{
// To store the respective sum
int sumOdd = 0;
int sumEven = 0;
// Converting integer to String
String num = n.ToString();
// Traversing the String
for(int i = 0; i < num.Length; i++)
if (i % 2 == 0)
sumOdd = sumOdd + (num[i] - '0');
else
sumEven = sumEven + (num[i] - '0');
Console.WriteLine("Sum odd = " + sumOdd);
Console.WriteLine("Sum even = " + sumEven);
}
// Driver code
public static void Main()
{
int n = 457892;
getSum(n);
}
}
// This code is contributed by subhammahato348
Javascript
输出:
Sum odd = 20
Sum even = 15
另一种方法:无需颠倒数字即可解决问题。我们可以从数字的末尾一一提取所有数字。如果原始数字是奇数,则最后一位数字必须是奇数,否则将是偶数。处理完一个数字后,我们可以将状态从奇数反转为偶数,反之亦然。
下面是上述方法的实现:
C++
// C++ implementation of the approach
#include
using namespace std;
// Function to find the sum of the odd
// and even positioned digits in a number
void getSum(int n)
{
// If n is odd then the last digit
// will be odd positioned
bool isOdd = (n % 2 == 1) ? true : false;
// To store the respective sums
int sumOdd = 0, sumEven = 0;
// While there are digits left process
while (n != 0) {
// If current digit is odd positioned
if (isOdd)
sumOdd += n % 10;
// Even positioned digit
else
sumEven += n % 10;
// Invert state
isOdd = !isOdd;
// Remove last digit
n /= 10;
}
cout << "Sum odd = " << sumOdd << "\n";
cout << "Sum even = " << sumEven;
}
// Driver code
int main()
{
int n = 457892;
getSum(n);
return 0;
}
Java
// Java implementation of the above approach
class GFG{
// Function to find the sum of the odd
// and even positioned digits in a number
static void getSum(int n)
{
// If n is odd then the last digit
// will be odd positioned
boolean isOdd = (n % 2 == 1) ? true : false;
// To store the respective sums
int sumOdd = 0, sumEven = 0;
// While there are digits left process
while (n != 0)
{
// If current digit is odd positioned
if (isOdd)
sumOdd += n % 10;
// Even positioned digit
else
sumEven += n % 10;
// Invert state
isOdd = !isOdd;
// Remove last digit
n /= 10;
}
System.out.println("Sum odd = " + sumOdd);
System.out.println("Sum even = " + sumEven);
}
// Driver code
public static void main(String[] args)
{
int n = 457892;
getSum(n);
}
}
// This code is contributed by jrishabh99
蟒蛇3
# Python3 implementation of the approach
# Function to find the sum of the odd
# and even positioned digits in a number
def getSum(n):
# If n is odd then the last digit
# will be odd positioned
if (n % 2 == 1) :
isOdd = True
else:
isOdd = False
# To store the respective sums
sumOdd = 0
sumEven = 0
# While there are digits left process
while (n != 0) :
# If current digit is odd positioned
if (isOdd):
sumOdd += n % 10
# Even positioned digit
else:
sumEven += n % 10
# Invert state
isOdd = not isOdd
# Remove last digit
n //= 10
print( "Sum odd = " , sumOdd )
print("Sum even = " ,sumEven)
# Driver code
if __name__ =="__main__":
n = 457892
getSum(n)
# This code is contributed by chitranayal
C#
// C# implementation of the above approach
using System;
class GFG{
// Function to find the sum of the odd
// and even positioned digits in a number
static void getSum(int n)
{
// If n is odd then the last digit
// will be odd positioned
bool isOdd = (n % 2 == 1) ? true : false;
// To store the respective sums
int sumOdd = 0, sumEven = 0;
// While there are digits left process
while (n != 0)
{
// If current digit is odd positioned
if (isOdd)
sumOdd += n % 10;
// Even positioned digit
else
sumEven += n % 10;
// Invert state
isOdd = !isOdd;
// Remove last digit
n /= 10;
}
Console.WriteLine("Sum odd = " + sumOdd);
Console.Write("Sum even = " + sumEven);
}
// Driver code
static public void Main ()
{
int n = 457892;
getSum(n);
}
}
// This code is contributed by offbeat
Javascript
输出:
Sum odd = 20
Sum even = 15
方法#3:使用字符串()方法:
- 将整数转换为字符串。遍历字符串并将所有偶数索引总和存储在一个变量中,并将所有奇数索引总和存储在另一个变量中。
下面是实现:
C++
// C++ implementation of the approach
#include
using namespace std;
// Function to find the sum of the odd
// and even positioned digits in a number
void getSum(int n)
{
// To store the respective sums
int sumOdd = 0, sumEven = 0;
// Converting integer to string
string num = to_string(n);
// Traversing the string
for(int i = 0; i < num.size(); i++)
{
if (i % 2 == 0)
sumOdd = sumOdd + (int(num[i]) - 48);
else
sumEven = sumEven + (int(num[i]) - 48);
}
cout << "Sum odd = " << sumOdd << "\n";
cout << "Sum even = " << sumEven << "\n";
}
// Driver code
int main()
{
int n = 457892;
getSum(n);
return 0;
}
// This code is contributed by souravmahato348
Java
// Java implementation of the approach
import java.util.*;
class GFG{
static void getSum(int n)
{
// To store the respective sum
int sumOdd = 0;
int sumEven = 0;
// Converting integer to String
String num = String.valueOf(n);
// Traversing the String
for(int i = 0; i < num.length(); i++)
if (i % 2 == 0)
sumOdd = sumOdd + (num.charAt(i) - '0');
else
sumEven = sumEven + (num.charAt(i) - '0');
System.out.println("Sum odd = " + sumOdd);
System.out.println("Sum even = " + sumEven);
}
// Driver code
public static void main(String[] args)
{
int n = 457892;
getSum(n);
}
}
// Code contributed by swarnalii
蟒蛇3
# Python3 implementation of the approach
# Function to find the sum of the odd
# and even positioned digits in a number
def getSum(n):
# To store the respective sums
sumOdd = 0
sumEven = 0
# Converting integer to string
num = str(n)
# Traversing the string
for i in range(len(num)):
if(i % 2 == 0):
sumOdd = sumOdd+int(num[i])
else:
sumEven = sumEven+int(num[i])
print("Sum odd = ", sumOdd)
print("Sum even = ", sumEven)
# Driver code
if __name__ == "__main__":
n = 457892
getSum(n)
# This code is contributed by vikkycirus
C#
// C# implementation of the approach
using System;
class GFG{
static void getSum(int n)
{
// To store the respective sum
int sumOdd = 0;
int sumEven = 0;
// Converting integer to String
String num = n.ToString();
// Traversing the String
for(int i = 0; i < num.Length; i++)
if (i % 2 == 0)
sumOdd = sumOdd + (num[i] - '0');
else
sumEven = sumEven + (num[i] - '0');
Console.WriteLine("Sum odd = " + sumOdd);
Console.WriteLine("Sum even = " + sumEven);
}
// Driver code
public static void Main()
{
int n = 457892;
getSum(n);
}
}
// This code is contributed by subhammahato348
Javascript
输出:
Sum odd = 20
Sum even = 15