import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("a: ");
int a = in.nextInt();
System.out.print("b: ");
int b = in.nextInt();
int s = 0;
while (b < a) {
System.out.println("Error b>=a");
b = in.nextInt();
}
b = b + 1;
for (int i = a;b > i; i++) {
s += i*i;
System.out.print(s);
Объяснение:
#include <iostream>
short transform(short A)
{
// находим 5й бит А
bool bit = (A >> 4) & 1;
// если 5й бит равен 1, то просто применяем побитовое или на 11й бит А (1 | 1 = 1, 0 | 1 = 1 )
if (bit == 1)
A |= 1 << 10;
// если 0, то применяем побитовое и (1 & 0 = 0, 0 & 0 = 0)
else
// для того чтоб побитовое и не стерло число, его нужно сделать вида 011...11 (0 и 10 единиц)
// сделать это можно сдвинув 1 бит на 10 позиций влево и инвертировав полученый результат
A &= ~(1 << 10);
return A;
short test(short A)
// можно взять логарифм по основанию 2 от A, но...
// сдвигаем все биты числа к концу, пока старший бит числа не окажется на месте 16го бита
if (A == 0)
return 0;
while (A >> 15 == 0)
A <<= 1;
// проверяем 12й-16й биты если они равны единицам
return ((A >> 12) & 0b1111) == 0b1111;
int main(int argc, char *argv[])
const size_t n = 1;
short mas[n];
for (short &elm : mas)
std::cin >> elm;
elm = transform(elm);
std::cout << elm << ' ' << test(elm) << '\n';
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("a: ");
int a = in.nextInt();
System.out.print("b: ");
int b = in.nextInt();
int s = 0;
while (b < a) {
System.out.println("Error b>=a");
System.out.print("b: ");
b = in.nextInt();
}
b = b + 1;
for (int i = a;b > i; i++) {
s += i*i;
}
System.out.print(s);
}
}
Объяснение:
#include <iostream>
short transform(short A)
{
// находим 5й бит А
bool bit = (A >> 4) & 1;
// если 5й бит равен 1, то просто применяем побитовое или на 11й бит А (1 | 1 = 1, 0 | 1 = 1 )
if (bit == 1)
A |= 1 << 10;
// если 0, то применяем побитовое и (1 & 0 = 0, 0 & 0 = 0)
else
// для того чтоб побитовое и не стерло число, его нужно сделать вида 011...11 (0 и 10 единиц)
// сделать это можно сдвинув 1 бит на 10 позиций влево и инвертировав полученый результат
A &= ~(1 << 10);
return A;
}
short test(short A)
{
// можно взять логарифм по основанию 2 от A, но...
// сдвигаем все биты числа к концу, пока старший бит числа не окажется на месте 16го бита
if (A == 0)
return 0;
while (A >> 15 == 0)
A <<= 1;
// проверяем 12й-16й биты если они равны единицам
return ((A >> 12) & 0b1111) == 0b1111;
}
int main(int argc, char *argv[])
{
const size_t n = 1;
short mas[n];
for (short &elm : mas)
{
std::cin >> elm;
elm = transform(elm);
}
for (short &elm : mas)
std::cout << elm << ' ' << test(elm) << '\n';
}