Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 07.11.2018, 19:38
mirara_002 mirara_002 вне форума
Прохожий
 
Регистрация: 07.11.2018
Сообщения: 1
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Задача "Проверь себя"!(с++)

You are given an positive integer number n. Count the amount of the lucky and almost lucky numbers
from one until n (inclusive).
The number is considered to be lucky if it is divided to 7 without a remainder.
The number is considered to be almost lucky if it is divided to 7 with a remainder of 2.
Count the amount of the lucky and almost lucky numbers from one until n (inclusive) !!!


Вам дается положительное целое число n. Подсчитайте количество удачливых и почти счастливых номеров
от одного до n (включительно).
Число считается удачным, если оно делится на 7 без остатка.

Число считается почти счастливым, если оно разделено на 7 с остатком 2.

Подсчитайте количество удачливых и почти счастливых чисел от одного до n (включительно) !!!

Input1: 10 Input2: 7 Input 3: 1
Output1: 3 Output2: 2 Output3: 0
Ответить с цитированием
  #2  
Старый 08.11.2018, 20:08
Аватар для ined
ined ined вне форума
Начинающий
 
Регистрация: 16.11.2008
Адрес: Российская Федерация!! :)
Сообщения: 165
Версия Delphi: Delphi 2010
Репутация: 1272
По умолчанию

Код:
Procedure HappyNumbers(n:DWORD; var HN:DWORD; var AHN:DWORD);
var i:DWORD;
begin
HN:=0;
AHN:=0;
for i := 1 to n do 
  begin
    if i mod 7 = 0 then inc(HN);
    if i mod 7 = 2 then inc(AHN);
  end;
end;
__________________
11011111 INED Home code
VK
Ответить с цитированием
  #3  
Старый 08.11.2018, 20:28
Аватар для ined
ined ined вне форума
Начинающий
 
Регистрация: 16.11.2008
Адрес: Российская Федерация!! :)
Сообщения: 165
Версия Delphi: Delphi 2010
Репутация: 1272
По умолчанию

Или так
Код:
Procedure HappyNumbers(n:DWORD; var HN:DWORD; var AHN:DWORD);
begin
HN:= n div 7;
AHN:= HN;
if n mod 7 >= 2 then inc(AHN);
end;
__________________
11011111 INED Home code
VK
Ответить с цитированием
  #4  
Старый 16.11.2018, 04:09
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,003
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Эта задачка явно на соображаловку. Т.е. тупо полным перебором ее решать можно, но не зачетно. Тут надо придумать эвристику.

Например, счастливые номера - те, которые делятся на 7 без остатка. Пишем ряд:
7, 14, 21, 28, 35, ...
Т.е. кол-во счастливых номеров от 1 до N должно быть N/7, если ничего не путаю (здесь "/" - это будет целочисленное деление).

С почти счастливыми надо подумать, но что-то мне подсказывает, что его можно высчитать из кол-ва счастливых.
Что-то типа
if (N % 7 < 2) AH = N/7 - 1 else AH = N/7; (здесь "%" - это остаток от деления, С/С++ все ж)

Последний раз редактировалось lmikle, 16.11.2018 в 04:15.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 17:44.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter