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

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

Войти
Регистрация
Восстановить пароль
 
Lesepka
0 / 0 / 0
Регистрация: 28.09.2009
Сообщений: 7
#1

Сколько можно? - C++

30.11.2010, 10:50. Просмотров 782. Ответов 4
Метки нет (Все метки)

Задано натуральное число N. От данного числа вычтем сумму цифр этого числа, от полученного числа опять вычтем сумму цифр и т.д. Данную операцию будем продолжать до тех пор, пока полученное число положительно. Сколько раз будем выполнять данную операцию?

Технические условия

Входные данные

Во входной строке находится число N, которое не превышает 2000000000.

Выходные данные

Количество выполненных операций

что-то голова совсем не варит...
Буду очень благодарна
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.11.2010, 10:50
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сколько можно? (C++):

Сколько бутылок воды можно выпить на n грн, учитывая, что пустые бутылки можно сдавать, и на полученные деньги приобрета - C++
Стоимость бутылки воды, учитывая стоимость пустой бутылки, составляет 1 грн 20 коп., а стоимость пустой буылки - 20 коп. Сколько...

За сколько можно выучить C++? - C++
Я уже долго его изучаю а так и не могу его хорошо выучить. Даже до классов еще не дошел. :cry:

Сколько раз можно пройти путь - C++
Надо дойти из точки S в точку D. То есть из левой крайней точки в правую. Каждый раз проходя граф, уменьшаем его на 1. Если граф равен 0 по...

Сколько можно получить регистрационных ключей - C++
Установила Visual С++ Express. Нужен регистрационный ключ. Скажите, пожалуйста, сколько можно получить ключей на один адрес (на одну анкету...

Сколько можно построить лестниц из кубиков? - C++
http://acm.timus.ru/problem.aspx?space=1&num=1017 Вот такой вот код, рабочий, но все же гавнокод Вместо динамического программирования...

За сколько можно выучить C++ на достаточном уровне? - C++
Привет всем форумчанам, я начал учить C++ и у меня вопрос назрел, а за сколько можно выучить этот язык на достаточном уровне? Моя цель это...

4
besstiaa
94 / 94 / 7
Регистрация: 04.06.2010
Сообщений: 223
30.11.2010, 12:38 #2
Как-то так...

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 <iostream>
 
int main()
{
    int N;
    std::cout << "N = ";
    std::cin >> N;
 
    int counter = 0, temp, sum = N;
    while(sum > 0)
    {
        counter++;
        temp = sum;
        while(temp != 0)
        {
            sum -= temp % 10;
            temp /= 10;
        }
    }
    std::cout << counter << std::endl;
    system("Pause");
    return 0;
}
0
spy_3462
6 / 6 / 1
Регистрация: 19.11.2010
Сообщений: 18
30.11.2010, 13:42 #3
Цитата Сообщение от besstiaa Посмотреть сообщение
Как-то так...

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 <iostream>
 
int main()
{
    int N;
    std::cout << "N = ";
    std::cin >> N;
 
    int counter = 0, temp, sum = N;
    while(sum > 0)
    {
        counter++;
        temp = sum;
        while(temp != 0)
        {
            sum -= temp % 10;
            temp /= 10;
        }
    }
    std::cout << counter << std::endl;
    system("Pause");
    return 0;
}
Доброго времени суток!
Проходил мимо, стало интересно!
Тестирование...
N=1590
Результат кода 131
т.е. 1+5+9+0=15
15х131=1605
Результат ответа НЕВЕРНО! (правильный ответ 106)
П.С. Ничего личного
П.П.С. Т.к. было интересно реализовал задачку на c#, но ветка не та поэтому код не выкладывался!
1
easybudda
Модератор
Эксперт CЭксперт С++
9693 / 5643 / 962
Регистрация: 25.07.2009
Сообщений: 10,847
30.11.2010, 14:07 #4
Цитата Сообщение от spy_3462 Посмотреть сообщение
N=1590
Результат кода 131
т.е. 1+5+9+0=15
15х131=1605
Результат ответа НЕВЕРНО! (правильный ответ 106)
Не понял связи между количеством вычитаний из числа суммы его цифр и произведением первой суммы на это количество. Сделал другой вариант - по сути не правильный (из-за аццкой рекурсии до 2000000000 ни за какие коврижки не досчитает), но на меньших числах выдаёт такой же результат, как у besstiaa

spy_3462, думаю, загвоздка в том, что нужно каждый раз сумму цифр вычислять, а не только для исходного числа... В виде исключения выложите свой код на C# - по крайней мере логика ясна будет...
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
 
int sum(int number){
    return ( number < 10 ) ? number : number % 10 + sum(number / 10);
}
 
int cnt(int number){
    int s = sum(number);
    return ( number > s ) ? 1 + cnt(number - s) : 1;
}
 
int main(void){
    int num;
    
    while ( printf("Number: ") && scanf("%d", &num) == 1 && num > 0 )
        printf("%d operations.\n", cnt(num));
    
    return 0;
}
0
spy_3462
6 / 6 / 1
Регистрация: 19.11.2010
Сообщений: 18
30.11.2010, 14:25 #5
Быдло код на C#
Вместо использования Math.Pow() изобрел велосипед в виде рекурсивной функции stepen()
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
using System;
namespace arr
{
    class Program
    {
        static int stepen(int m,int n)
        {
            if (n!=0)
                return m*stepen(m,n-1);
            else return 1;          
        }
        public static void Main(string[] args)
        {
            int n=int.Parse(Console.ReadLine());
            int[] arr1=new int[9];
            int m=10;           
            int k=0;
            for(int i=arr1.Length;i>0;i--)
            {
                if (i==arr1.Length)
                {
                    arr1[i-1]=n/stepen(m,i-1);
                    k=stepen(m,i-1)*arr1[i-1];
                }
                else
                {
                    arr1[i-1]=(n-k)/stepen(m,i-1);
                    k+=stepen(m,i-1)*arr1[i-1];
                }
            }
            // Собираю сумму цифр тут!!!
            int z=0;
            foreach (int i in arr1)
                z+=i;
            if (z!=0)
            {
                int y=0;
                while((n-z*y)>0)
                {y++;}
                Console.WriteLine("{0} - ({1} x [{2}]) = {3}",n,z,y,n-z*y);
            }
            else
            {Console.WriteLine("Решения нет");};
            Console.ReadKey(true);
        }
    }
}
0
30.11.2010, 14:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.11.2010, 14:25
Привет! Вот еще темы с ответами:

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

Определить сколько деталей можно изготовить за смену - C++
Продолжительность смены и время,требуемое на изготовление одной детали.Определить сколько деталей можно изготовить за смену. ...

Сколько палиндромов длиной n можно образовать из 26 букв - C++
Сколько палиндромов длиной n можно образовать из 26 букв Подскажите, как можно реализовать? Идей нет... Может ввести массив из...

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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