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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Sh@dow777
12 / 12 / 3
Регистрация: 10.12.2013
Сообщений: 674
#1

Счастливые числа - C++

25.12.2013, 05:01. Просмотров 1104. Ответов 21
Метки нет (Все метки)

Вот мой код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
 
int main()
{
    int T,count,i,s,k,l,r;
 
    s = 0;
    k = 0;
 
    scanf("%d", &T);
 
    for(count = 1;count <= T;count++){
        scanf("%d %d", &l, &r);
 
        for(i = l;i <= r;i++){
            if(i / 4 == 1 || i / 7 == 1)
                s = k + 1;
        }
        printf("%d\n", s);
    }
 
    return 0;
}
В задаче нужно вычислить количество чисел между L и R включительно, которые нацело делятся на 4 или на 7. То есть если даны числа 4 и 7, то должно выдать 2. У меня всегда выводит 1. Даже если я выбираю числа 0 и 0. В чем проблема?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.12.2013, 05:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Счастливые числа (C++):

Счастливые числа - C++
Как-то не могу вникнуть в суть кода :( Назовем число счастливым, если сумма цифр на четных позициях равня сумме цифр на нечетных...

Счастливые числа - C++
Счастливым будем считать такое число из шести цифр, кортом сумма левых трех цифр равна сумме правых трех цифр. Найти все счастливые билеты...

6-значные счастливые числа - C++
Здравствуйте, прошу помощи! Тема: Функции. Получить все 6-значные счастливые числа, т.е. те, у которых сумма первых трех цифр...

Найти все шестизначные счастливые числа (исправить код) - C++
Задание: Найти все шестизначные счастливые числа. Счастливое число - это число, у которого сумма левых трех цифр равна сумме правых трех....

Счастливые билеты - C++
Здравствуйте, имеется интересная задачка. Вводится первое и последнее возможные числа билетовЮ, нужно посчитать сколько счастливых...

Счастливые билетики - C++
Знаю что задача довольна распространена, но решения для моего случая не нашел. Необходимо найти количество всех счастливых билетов(сумма...

21
valeriikozlov
Эксперт С++
4670 / 2496 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
25.12.2013, 08:36 #16
Ссылку на сайт с задачей можете дать?
0
Sh@dow777
12 / 12 / 3
Регистрация: 10.12.2013
Сообщений: 674
25.12.2013, 08:49  [ТС] #17
Это сайт университетский. Поэтому вам нужно будет регистрироваться.

Добавлено через 3 минуты
http://ejudge.crimea.edu/cgi-bin/new...39&locale_id=1
0
valeriikozlov
Эксперт С++
4670 / 2496 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
25.12.2013, 08:50 #18
Хорошо, тогда такие вопросы:
1. Какую ошибку выдает тестирующая система на последний код?
2. Нет ли там в разделе "помощь" или "новичкам" фразы о том что данные нужно считывать из файла и результат записывать в файл?
0
Sh@dow777
12 / 12 / 3
Регистрация: 10.12.2013
Сообщений: 674
25.12.2013, 08:56  [ТС] #19
1) превышено максимальное время работы на тесте 1.
2) раздела помощь нет.
0
valeriikozlov
Эксперт С++
4670 / 2496 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
25.12.2013, 09:20 #20
превышение времени было еще из-за таких ограничений:
Цитата Сообщение от Sh@dow777 Посмотреть сообщение
Первая строка содержит одно число N (1 <= N <= 5000) (количество тестовых случаев). Следующие N строк содержат по 2 числа L и R (1 <= L <= R <= 1,000,000,000) разделенных пробелом.
в худшем случае время работы было бы: 1000000000*5000, естественно за 1 сек не получилось бы сдать. Пробуйте такой вариант (у меня он прошел):
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
 
int main()
{
    long T,count,i,s,k,l,r;
    
    scanf("%ld", &T);
 
    for(count = 1;count <= T;count++){
        scanf("%ld %ld", &l, &r);
 
        s = (r/4+r/7-r/28)-((l-1)/4+(l-1)/7-(l-1)/28);
 
        printf("%ld\n", s);
    }
 
    return 0;
}
2
Sh@dow777
12 / 12 / 3
Регистрация: 10.12.2013
Сообщений: 674
25.12.2013, 14:58  [ТС] #21
Фууууууух, приняло. Спасибо огромное. А откуда такая большая формула?
0
valeriikozlov
Эксперт С++
4670 / 2496 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
25.12.2013, 17:09 #22
Цитата Сообщение от Sh@dow777 Посмотреть сообщение
А откуда такая большая формула?
сам вывел. Смысл такой:
r/4 - кол-во чисел от 1 до r включительно, которые делятся на 4 без остатка.
r/7 - по аналогии, которые делятся на 7 без остатка.
r/28 - по аналогии, которые делятся на 28 без остатка.
(r/4+r/7-r/28) - кол-во чисел от 1 до r включительно, которые делятся на 4 и на 7 минус количество чисел, которые делятся на 28. Т.к. каждое 28 число (28, 56, 84 и т.д.) делится и на 4 и на 7, поэтому мы вычитаем это количество.
((l-1)/4+(l-1)/7-(l-1)/28) - по той же аналогии, только диапазон от 1 до l-1 включительно.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.12.2013, 17:09
Привет! Вот еще темы с ответами:

Счастливые билеты - C++
найти колличество счастливых билетов, колличество цыфр в билетах может быть до N (N&lt;=100), помогите пожалуйсто, или хотябы подскажите...

Счастливые билеты - C++
Знаю, что вопрос довольно распространенный и решений можно найти много, но у меня ограниченное задание: нужно найти сумму всех счастливых...

Задача на счастливые билеты - C++
Уважаемые господа ! Будте добры , помогите решить задачку. Имееться билет с шестизначным номером(числом). Билет считаеться счастливым...

Задача на счастливые билеты C++ - C++
Найдите кол-во счастливых билетов типа - XXXXXX Счастливым является билет у которого три первые цифры равны трём последним Первый билет...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
22
Yandex
Объявления
25.12.2013, 17:09
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru