给定数字n。求出最多2位已设置的n的总和。
例子:
Input : 10
Output : 33
3 + 5 + 6 + 9 + 10 = 33
Input : 100
Output : 762
幼稚的方法:查找设置为2位的最多n个数字。如果设置了它的2位,则将其添加到总和中。
C++
// CPP program to find sum of numbers
// upto n whose 2 bits are set
#include
using namespace std;
// To count number of set bits
int countSetBits(int n)
{
int count = 0;
while (n) {
n &= (n - 1);
count++;
}
return count;
}
// To calculate sum of numbers
int findSum(int n)
{
int sum = 0;
// To count sum of number
// whose 2 bit are set
for (int i = 1; i <= n; i++)
if (countSetBits(i) == 2)
sum += i;
return sum;
}
// Driver program to test above function
int main()
{
int n = 10;
cout << findSum(n);
return 0;
}
Java
// Java program to find sum of numbers
// upto n whose 2 bits are set
public class Main {
// To count number of set bits
static int countSetBits(int n)
{
int count = 0;
while (n > 0) {
n &= (n - 1);
count++;
}
return count;
}
// To calculate sum of numbers
static int findSum(int n)
{
int sum = 0;
// To count sum of number
// whose 2 bit are set
for (int i = 1; i <= n; i++)
if (countSetBits(i) == 2)
sum += i;
return sum;
}
// Driver program to test above function
public static void main(String[] args)
{
int n = 10;
System.out.println(findSum(n));
}
}
Python3
# Python program to find
# sum of numbers
# upto n whose 2 bits are set
# To count number of set bits
def countSetBits(n):
count = 0
while (n):
n =n & (n - 1)
count=count + 1
return count
# To calculate sum of numbers
def findSum(n):
sum = 0
# To count sum of number
# whose 2 bit are set
for i in range(1,n+1):
if (countSetBits(i) == 2):
sum =sum + i
return sum
# Driver code
n = 10
print(findSum(n))
# This code is contributed
# by Anant Agarwal.
C#
// C# program to find sum of
// numbers upto n whose 2
// bits are set
using System;
class GFG
{
// To count number
// of set bits
static int countSetBits(int n)
{
int count = 0;
while (n > 0)
{
n = n & (n - 1);
count++;
}
return count;
}
// To calculate
// sum of numbers
static int findSum(int n)
{
int sum = 0;
// To count sum of number
// whose 2 bit are set
for (int i = 1; i <= n; i++)
if (countSetBits(i) == 2)
sum += i;
return sum;
}
// Driver Code
static public void Main ()
{
int n = 10;
Console.WriteLine(findSum(n));
}
}
// This code is contributed by aj_36
PHP
Javascript
C++
// C++ program to find sum of numbers
// upto n whose 2 bits are set
#include
using namespace std;
// To calculate sum of numbers
int findSum(int n)
{
int sum = 0;
// Find numbers whose 2 bits are set
for (int i = 1; (1 << i) < n; i++) {
for (int j = 0; j < i; j++) {
int num = (1 << i) + (1 << j);
// If number is greater then n
// we don't include this in sum
if (num <= n)
sum += num;
}
}
// Return sum of numbers
return sum;
}
// Driver program to test findSum()
int main()
{
int n = 10;
cout << findSum(n);
return 0;
}
Java
// Java program to find sum of numbers
// upto n whose 2 bits are set
public class Main {
// To calculate sum of numbers
static int findSum(int n)
{
int sum = 0;
// Find numbers whose 2 bits are set
for (int i = 1; 1 << i < n; i++) {
for (int j = 0; j < i; j++) {
int num = (1 << i) + (1 << j);
// If number is greater then n
// we don't include this in sum
if (num <= n)
sum += num;
}
}
// Return sum of numbers
return sum;
}
// Driver program to test findSum()
public static void main(String[] args)
{
int n = 10;
System.out.println(findSum(n));
}
}
Python3
# Python3 program to find sum of
# numbers upto n whose 2 bits are set
# To calculate sum of numbers
def findSum(n) :
sum = 0
# Find numbers whose 2
# bits are set
i = 1
while((1 << i) < n ) :
for j in range(0, i) :
num = (1 << i) + (1 << j)
# If number is greater then n
# we don't include this in sum
if (num <= n) :
sum += num
i += 1
# Return sum of numbers
return sum
# Driver Code
n = 10
print(findSum(n))
# This code is contributed
# by Smitha
C#
// C# program to find sum of numbers
// upto n whose 2 bits are set
using System;
public class main {
// To calculate sum of numbers
static int findSum(int n)
{
int sum = 0;
// Find numbers whose 2 bits are set
for (int i = 1; 1 << i < n; i++)
{
for (int j = 0; j < i; j++)
{
int num = (1 << i) + (1 << j);
// If number is greater then n
// we don't include this in sum
if (num <= n)
sum += num;
}
}
// Return sum of numbers
return sum;
}
// Driver Code
public static void Main(String []args)
{
int n = 10;
Console.WriteLine(findSum(n));
}
}
// This Code is contributed by vt_m.
PHP
Javascript
输出:
33
高效方法:设置2位的数字的形式为2 ^ x + 2 ^ y,并且该数字小于n。因此,我们仅需查找范围为n的数字,其形式为2 ^ i + 2 ^ j,其中i> 0且2 ^ i 输出 : C++
// C++ program to find sum of numbers
// upto n whose 2 bits are set
#include
Java
// Java program to find sum of numbers
// upto n whose 2 bits are set
public class Main {
// To calculate sum of numbers
static int findSum(int n)
{
int sum = 0;
// Find numbers whose 2 bits are set
for (int i = 1; 1 << i < n; i++) {
for (int j = 0; j < i; j++) {
int num = (1 << i) + (1 << j);
// If number is greater then n
// we don't include this in sum
if (num <= n)
sum += num;
}
}
// Return sum of numbers
return sum;
}
// Driver program to test findSum()
public static void main(String[] args)
{
int n = 10;
System.out.println(findSum(n));
}
}
Python3
# Python3 program to find sum of
# numbers upto n whose 2 bits are set
# To calculate sum of numbers
def findSum(n) :
sum = 0
# Find numbers whose 2
# bits are set
i = 1
while((1 << i) < n ) :
for j in range(0, i) :
num = (1 << i) + (1 << j)
# If number is greater then n
# we don't include this in sum
if (num <= n) :
sum += num
i += 1
# Return sum of numbers
return sum
# Driver Code
n = 10
print(findSum(n))
# This code is contributed
# by Smitha
C#
// C# program to find sum of numbers
// upto n whose 2 bits are set
using System;
public class main {
// To calculate sum of numbers
static int findSum(int n)
{
int sum = 0;
// Find numbers whose 2 bits are set
for (int i = 1; 1 << i < n; i++)
{
for (int j = 0; j < i; j++)
{
int num = (1 << i) + (1 << j);
// If number is greater then n
// we don't include this in sum
if (num <= n)
sum += num;
}
}
// Return sum of numbers
return sum;
}
// Driver Code
public static void Main(String []args)
{
int n = 10;
Console.WriteLine(findSum(n));
}
}
// This Code is contributed by vt_m.
的PHP
Java脚本
33