Форум программистов, компьютерный форум CyberForum.ru

Задача про зерна на шахматной доске - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Описать класс «записная книжка» http://www.cyberforum.ru/cpp-beginners/thread730700.html
Описать класс «записная книжка». Предусмотреть возможность работы с произвольным числом записей, поиска записи по какому-либо признаку (например, по фамилии, дате рождения или номеру телефона), добавления и удаления записей, сортировки по разным полям. Написать программу, демонстрирующую работу с этим классом. Программа должна содержать меню, позволяющее осуществить проверку всех методов класса.
C++ Ошибка в сортировке #include <iostream> #include <string> #include <algorithm> int const N = 5; using namespace std; class book{ public: http://www.cyberforum.ru/cpp-beginners/thread730691.html
C++ Описать класс "домашняя библиотека"
Помогите, пожалуйста в решении одной из 3х задач.Буду благодарна!!! 1.Описать класс «домашняя библиотека». Предусмотреть возможность работы с произвольным числом книг, поиска книги по какому-либо признаку (например, по автору или по году издания), добавления книг в библиотеку, удаления книг из нее, сортировки книг по разным полям. Написать программу, демонстрирующую работу с этим классом....
C++ Наибольшая общая подстрока
какие алгоритмы есть для нахождения Наибольшой общей подстроки?
C++ Как вывести матрицу смежности по заданной матрице весов дуг? http://www.cyberforum.ru/cpp-beginners/thread730685.html
Программа, реализующая алгоритм Флойда для поиска кратчайшего пути. Пользователь вводит ко-во вершин, затем указывает веса дуг, если вершины не соединены, то вес дуг = 0. Выводится матрица весов. Как сделать, чтоды выводилась матрица смежностей после матрицы весов? Floyd.h #ifndef _FLOYD_H_ #define _FLOYD_H_ #include <vector> #include <iostream> #include <iomanip> #include <algorithm>...
C++ Тонкость с указателями - взятие указателя на базовый класс Как-то возник в голове вопрос: пусть класс D наследует классы A и B. Если у меня есть объект D, я беру его адрес и типизирую его к базовым классам A и B. Получаю два указателя типа A* и B*. Будут ли они указывать на корректные объекты? Я всегда предполагал, что конструкции типа: Type1 *a = (Type1*)b; это указания компилятору интерпретировать данные по указателю b как данные типа Type1. А... подробнее

Показать сообщение отдельно
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,043
13.12.2012, 21:29     Задача про зерна на шахматной доске
Цитата Сообщение от CyberGenius Посмотреть сообщение
я не совсем понял, что делает данное выражение?
это сдвиг
в данном контексте возведение 2 в степень
для 0(первая клетка) 1<<0=1
для 1(вторая клетка) 1<<1=10(в двоичной) =2(десятичной)
для 2(третья клетка) 1<<2=100(в двоичной) =4 (десятичной)
ну и так далее

Добавлено через 4 минуты
тут можно вообще без цикла сосчитать
C++
1
2
3
4
5
6
7
unsigned long long a ;//Кол-во зерен в последней ячейке
unsigned long long  b = 0;//Тут храним сумму всех зерен
    cout <<"Введите кол-во заполненных зернами ячеек: "<<endl;
    cin>>i;
    
        a = 1<<(i-1);
        b = (1<<i )-1;
Добавлено через 22 минуты
Цитата Сообщение от MrGluck Посмотреть сообщение
ValeryS, а так изменяется значение переменной без создания копии. И это не синонимы, просто конечный результат схож.
смотрим
C++
1
2
3
4
int a=2;
int b=2;
a*=2;
b=b*2;
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
;int a=2;
0127138E  mov         dword ptr [a],2 
;int b=2;
01271395  mov         dword ptr [b],2 
;a*=2;
0127139C  mov         eax,dword ptr [a] 
0127139F  shl         eax,1 
012713A1  mov         dword ptr [a],eax 
;b=b*2;
012713A4  mov         eax,dword ptr [b] 
012713A7  shl         eax,1 
012713A9  mov         dword ptr [b],eax
где создается копия????
как видишь код идентичный
 
Текущее время: 18:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru