5319. Обнулить бит

 

Даны целые числа a и k. Выведите число, которое получается из a сбросом значения k-го бита в 0. Младший бит имеет номер 0.

 

Вход. Два числа a и k (0 ≤ a ≤ 109).

 

Выход. Выведите число a с обнулённым k-ым битом.

 

Пример входа

14 1

 

Пример выхода

12

 

 

РЕШЕНИЕ

элементарная задача – битовые операции

 

Анализ алгоритма

Значение 1 << k содержит единицу в k-ом бите, а во всех остальных битах нули. Тогда отрицание этого выражения, то есть ~(1 << k) содержит ноль в k-ом бите, а во всех остальных битах единицы. Осталось найти побитовый and значения a и ~(1 << k).

 

Реализация алгоритма

Читаем входные данные. Вычисляем и выводим ответ.

 

scanf("%d %d",&a,&k);

res = a & ~(1 << k);

printf("%d\n",res);

 

Java реализация

 

import java.util.*;

 

public class Main

{

  public static void main(String[] args) 

  {

    Scanner con = new Scanner(System.in);

    int a = con.nextInt();

    int k = con.nextInt();

    int res = a & ~(1 << k);

    System.out.println(res);

  }

}