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

Угадай число - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Частица движется случайно. http://www.cyberforum.ru/cpp/thread61260.html
1.Определить есть ли среди первых трех цифр из дробной части заданного положительного вещественного числа цифра 0 помоги плиииз.... такая тема в паскале уже есть...но нужно в си/++ решить....если можно то и таблицу тоже..... Добавлено через 22 минуты 2. частица движеться случайным образом согласно следующим условиям: в момент времени t=0 частица находиться, x=0, y=0. В момент...
C++ Две задачи. Задача1. Составить описание класса для определения одномерных массивов строк фиксированной длины. Предусмотреть возможность обращения к отдельным строкам массива по индексам, конртоль выхода за пределы массива выполнения операций поэлементного сцепления двух массивов с боразованием нового массива, слияния двух массивов с исключением повторяющихся элементов вывод га экран элемента массива по... http://www.cyberforum.ru/cpp/thread61049.html
Работа с файлами (до делать програмку) C++
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <iostream.h> #define MAX 100 struct chit { char fio ; char adres ; char telefon ; int godRojd ;
C++ screenmate: SetWindowRgn - не всегда меняет форму окна
Решил разобраться с устройством Скринмейтов (программок бегающих по экрану:)). Долго мучился с разрезанием картинки и т.д. (С++ знаю не очень...), но тем не менее добился кое-каких результатов. Скринмейтом полученное творение назвать нельзя, т.к. форма окна и картинка меняется по нажатию клавишь ВВЕРХ, ВНИЗ, выход на Escape. Ну естественно анимации нет. Картинку выдрал из другого скринмейта:) ...
C++ Быки и коровы http://www.cyberforum.ru/cpp/thread60712.html
Доброе время суток. Пользователь загадывает число из 4 цифр, каждая из которых от 1 до 6, причем все цифры различны. Разработать алгоритм, который угадывает число по следующим правилам: выводится число и пользователь сообщает, сколько в нем "быков" и "коров", т.е. сколько цифр стоят на своих местах и сколько цифр содержатся в обоих числах, но совпадают лишь по значению. Например, пусть загадано...
C++ Вопрос о типах данных С++ Всем привет! У меня путаница вышла со всем этим разнообразием типов данных в С++. Вообще, тип long double должен занимать 3 машинных слова (или 12 байт). Но вот когда я пишу : #include <iostream.h> #include <cstddef> void main() { long double qq=10; size_t qwer=sizeof qq; cout <<qwer <<endl; подробнее

Показать сообщение отдельно
odip
Эксперт С++
7155 / 3295 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
06.11.2009, 22:56     Угадай число
2valeriikozlov: во-первых совершенно не очевидно, что алгоритм оптимальный.
во-вторых он еще немного криво:
Например при N=5, n=4:
Код
> 1.exe
Введите максимальное число N(не более 32767):
5
Делится ли задуманное число на 2.Если делится нажмите 1, если нет то нажмите 0
1
Делится ли задуманное число на 3.Если делится нажмите 1, если нет то нажмите 0
0
Делится ли задуманное число на 5.Если делится нажмите 1, если нет то нажмите 0
0
Делится ли задуманное число на 2.Если делится нажмите 1, если нет то нажмите 0
1
Делится ли задуманное число на 4.Если делится нажмите 1, если нет то нажмите 0
1
Делится ли задуманное число на 6.Если делится нажмите 1, если нет то нажмите 0
0
Задуманное число: 4
Добавлено через 10 минут
Рискну предположить, что если был ответ, что число делится на два, то далее следует задавать вопросы делится ли число на 2*2, 2*3, 2*5.

То есть видимо алгоритм такой (не факт что оптимальный).
Строим ряд простых чисел: 2 3 5 ...
Спрашиваем делится ли n на 2, n на 3, n на 5.
Двигается по этому ряду пока получаем ответ не делится.
Например:
n%2!=0, n%3!=0, n%5==0.

Если мы уже превысили N, а число так и не делится ни на что, то значит ответ: n==1.

Как только получили ответ что делится на простое число, то начинаем задавать вопросы уже другие.
Делится ли на 5*2, 5*3, 5*5, 5*7, ...
Так как проверять деление на 2 и на 3 уже нет смысла, то следующий вопрос будет:
Делится ли на 5*5, 5*7, 5*11, ...

Например если в данном примере мы больше не получим ответов что делится, то значит ответ: n==5.

И еще раз повторю - нужно еще доказать что это оптимальный алгоритм.

Добавлено через 12 минут
Продолжу алгоритм далее.
Если на вопрос делится ли на 5*11 следует ответ - ДА.
То дальше нужно проверять число 5*11*11.
Если опять ответ - ДА, то дальше нужно проверять 5*11*11*11.

Пусть p=1.
Пусть s[] - массив простых чисел.
Пусть ans= 1
Каждый раз мы спрашиваем: делится ли n на число q, где q= p*s[i].
Если ответ НЕТ - то делаем i++.
Если ответ ДА - то делаем ans= q; p*= s[i].
Вопросы заканчиваются когда число q>N.
Ответ: число ans.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru