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

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

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

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

25.12.2013, 05:01. Просмотров 1102. Ответов 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
uhx
60 / 60 / 6
Регистрация: 11.07.2013
Сообщений: 304
25.12.2013, 05:25 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;
 
int main(){
    setlocale(0,"");
    int i,s,k,l,r;
    s = 0;
    k = 0;
    cin>>l>>r;
        for(i = l;i <= r;i++){
            if(!(i%4))s++;
            if(!(i%7))s++;
        }
    cout<<s;
    system("pause>>void");
}
Может так? Ведь если будет число 28, то s должно 2 раза плюсануть, т.к. оно делится нацело и на 4, и на 7...
0
Sh@dow777
12 / 12 / 3
Регистрация: 10.12.2013
Сообщений: 674
25.12.2013, 05:46  [ТС] #3
Я понимаю. Но мне же нужно, чтобы количество чисел в цикле вычислялось. Немного изменил код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#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 || i / 7)
                k+=1;
            s = k;  
        }
        printf("%d\n", s);
    }
 
    return 0;
}
Теперь количество вычисляется не для отдельных тестов а все прибавляется и прибавляется, пока программа не завершится. И почему то когда я ввожу числа 4 и 7, то мне выдает 4, то есть и 5/4 и 6/4. А мне нужно суммировать количество тех чисел, которые делятся нацело без остатка на 4 или на 7. Как это сделать?
0
uhx
60 / 60 / 6
Регистрация: 11.07.2013
Сообщений: 304
25.12.2013, 06:01 #4
Я разве написал не готовый код?
Цитата Сообщение от Sh@dow777 Посмотреть сообщение
И почему то когда я ввожу числа 4 и 7, то мне выдает 4, то есть и 5/4 и 6/4. А мне нужно суммировать количество тех чисел, которые делятся нацело без остатка на 4 или на 7. Как это сделать?
Пруф

Добавлено через 2 минуты
Цитата Сообщение от Sh@dow777 Посмотреть сообщение
Я понимаю. Но мне же нужно, чтобы количество чисел в цикле вычислялось.
Цитата Сообщение от uhx Посмотреть сообщение
if(!(i%4))s++;
if(!(i%7))s++;
Я тебя что-то не понимаю. Ты мой код то компилил?
1
Sh@dow777
12 / 12 / 3
Регистрация: 10.12.2013
Сообщений: 674
25.12.2013, 06:13  [ТС] #5
Да, теперь количество вычисляется. Но мне нужно чтоб количество вычислялось для каждого теста отдельно. То есть, если первый раз я введу 4 7 - покажет 2, а второй раз я введу 3 4 и должно показать 1. А сейчас программа к 2-ум прибавляет 1.
0
uhx
60 / 60 / 6
Регистрация: 11.07.2013
Сообщений: 304
25.12.2013, 06:32 #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
using namespace std;
 
int main(){
    setlocale(0,"");
    int i,s,k,l,r;
    cout<<"Кол-во тестов: ";
    cin>>k;
    while(k--){
        s=0;
        system("cls");
        cin>>l>>r;
        for(i = l;i <= r;i++){
            if(!(i%4))s++;
            if(!(i%7))s++;
        }
    cout<<s;
    system("pause>>void");
    }
}
Добавлено через 1 минуту
Теперь вроде все) Удачи.
0
Sh@dow777
12 / 12 / 3
Регистрация: 10.12.2013
Сообщений: 674
25.12.2013, 06:33  [ТС] #7
Так как сделать вычисление количества чисел отдельно для каждого теста, чтоб оно не суммировалось? Помогите.
0
uhx
60 / 60 / 6
Регистрация: 11.07.2013
Сообщений: 304
25.12.2013, 06:36 #8
Sh@dow777, обновить тему и скопировать мой код Могу комменты написать, если чего не понятно.
1
Sh@dow777
12 / 12 / 3
Регистрация: 10.12.2013
Сообщений: 674
25.12.2013, 07:03  [ТС] #9
Спасибо огромное! Как я не догадался s = 0 в цикл вставить.

Добавлено через 3 минуты
Я просто только начал изучать программирование. Надо зачет сдать. На каникулах буду сидеть сам пытаться задачи решать.

Добавлено через 19 минут
Я проверил ответ на сайте с задачами и система проверки не приняла задачу. Я посмотрел, как там показано, как должно быть. Я ввел числа 3 33 и мне выдало 12, а показано, что должно быть 11. Ввел 1234 4321 - мне выдало 1213, а должно выдать 1103. Я ничего не понимаю, что они хотят.
0
valeriikozlov
Эксперт С++
4670 / 2496 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
25.12.2013, 07:21 #10
Цитата Сообщение от Sh@dow777 Посмотреть сообщение
Я ничего не понимаю, что они хотят.
они хотят, чтобы числа кратные 4 и 7 одновременно, считались за одно число (а данный код считает их за два).
Вот так сделайте:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
using namespace std;
 
int main(){
    setlocale(0,"");
    int i,s,k,l,r;
    cout<<"Кол-во тестов: ";
    cin>>k;
    while(k--){
        s=0;
        system("cls");
        cin>>l>>r;
        for(i = l;i <= r;i++){
            if(!(i%4))s++;else
            if(!(i%7))s++;
        }
    cout<<s;
    system("pause>>void");
    }
}
1
Sh@dow777
12 / 12 / 3
Регистрация: 10.12.2013
Сообщений: 674
25.12.2013, 07:31  [ТС] #11
Спасибо. Теперь все правильно. А не могли бы вы мне обьяснить зачем нужны восклицательные знаки перед (i % 4) и перед (i % 7)?

Добавлено через 4 минуты
Извините, но система снова выдала неправильный ответ. Пишет превышено максимальное время работы на тесте 1.
0
valeriikozlov
Эксперт С++
4670 / 2496 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
25.12.2013, 08:13 #12
Цитата Сообщение от Sh@dow777 Посмотреть сообщение
Извините, но система снова выдала неправильный ответ. Пишет превышено максимальное время работы на тесте 1.
Вам программу писали для работы в ручном режиме. Т.е. выдает соббщение, что введите количество тестов, потом считает, выдает результат на экран, потом ждет пока не введете что-нибудь (поэтому и превышено максимальное время). Для тестирующей системы нужно так писать:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
using namespace std;
 
int main(){
    setlocale(0,"");
    int i,s,k,l,r;
    cout<<"Кол-во тестов: ";
    cin>>k;
    while(k--){
        s=0;
        system("cls");
        cin>>l>>r;
        for(i = l;i <= r;i++){
            if(!(i%4))s++;else
            if(!(i%7))s++;
        }
    cout<<s;
    system("pause>>void");
    }
}
Цитата Сообщение от Sh@dow777 Посмотреть сообщение
А не могли бы вы мне обьяснить зачем нужны восклицательные знаки перед (i % 4) и перед (i % 7)?
если число делится на 4, то i%4 будет равно 0. Применяя ! к нулю, получаем 1.
Т.е. выражение !(i%4) будет равно 1, когда число i делится на 4 без остатка. Когда число i не делится на 4 без остатка, то выражение !(i%4) будет равно 0.
0
Sh@dow777
12 / 12 / 3
Регистрация: 10.12.2013
Сообщений: 674
25.12.2013, 08:23  [ТС] #13
Вот я переделал, как вы сказали(только на C)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#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 = 0;
 
        for(i = l;i <= r;i++){
            if(!(i % 4))
                s++;
            else if(!(i % 7))
                s++;
        }
 
        printf("%ld\n", s);
    }
 
    return 0;
}
И все равно выдает ошибку.
0
valeriikozlov
Эксперт С++
4670 / 2496 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
25.12.2013, 08:28 #14
Цитата Сообщение от Sh@dow777 Посмотреть сообщение
И все равно выдает ошибку.
полный текст задания напишите здесь.
0
Sh@dow777
12 / 12 / 3
Регистрация: 10.12.2013
Сообщений: 674
25.12.2013, 08:32  [ТС] #15
Вася называет число счастливым, если оно нацело делится на 4 или на 7. Ваша задача состоит в том, чтобы посчитать количество счастливых чисел между числами L и R включительно.
Input

Первая строка содержит одно число N (1 <= N <= 5000) (количество тестовых случаев). Следующие N строк содержат по 2 числа L и R (1 <= L <= R <= 1,000,000,000) разделенных пробелом.
Output

Для каждого тестового случая в отдельной строке выведите количество счастливых чисел между L и R включительно.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.12.2013, 08:32
Привет! Вот еще темы с ответами:

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

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

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

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


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

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

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