Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.88/26: Рейтинг темы: голосов - 26, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 17.09.2014
Сообщений: 9

Получить заданное число m сложением/вычитанием цифр

22.09.2014, 17:31. Показов 5451. Ответов 81
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Очень-очень нужна помощь!
дано n (n>=2) количество цифр от 1 до 9 и любое число m. Написать программу расстановки между каждой парой чисел, записанных именно в таком порядке, знаков "+" и "-" так, чтобы значение полученного выражения равнялось m.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.09.2014, 17:31
Ответы с готовыми решениями:

Дано натуральное число. Определить сумму m его последних цифр. Если заданное число – менее чем m-значное, то
Дано натуральное число. Определить сумму m его последних цифр. Если заданное число – менее чем m-значное, то "недостающие" цифры...

В матрице состоящей из цифр найти цепочку составляющую заданное число
Дана квадратная матрица F, состоящая из цифр. Найти в ней цепочку цифр, составляющую заданное число D, 9<D<100000. Цепочку составляют...

Вывести на экран сумму кодов (по ASCII) цифр входящих в заданное число
help

81
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
23.09.2014, 16:13
Студворк — интернет-сервис помощи студентам
_Ivana, на мой взгляд, клюнуть пользователя Mr.X за форматирование кода - устоявшаяся традиция среди новичков (если будет позволительно использовать такой оксюморон - "традиция новичков" ^_^). Сам грешен. Но вот что заметил - чем больше программируешь на C++, тем больше начинает нравиться и быть понятным код в стиле Mr.X. Необязательно перенимать его манеру подчистую, но стиль у него интересный, многому можно поучиться, и для себя я решил, что какие-то элементы оформления можно с чистой совестью заимствовать (если автор не против).
2
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,991
Записей в блоге: 32
23.09.2014, 16:31
Цитата Сообщение от SlavaSSU Посмотреть сообщение
а то миллиард чисел и не проверишь на верность. А еще верно ли, что твой алгоритм не работает, если даны не цифры, а числа ну скажем до 1000?
На верность проверяется тривиально и просто. Если даны числа до 1000 то тоже будет работать, надо только заранее знать верхний диапазон максимального числа. И повторюсь - нужно продумать/дописать вторую часть алгоритма, которая в определенных ситуациях может потребоваться.
gru74ik, ну значит я поступил традиционно А поучиться всегда есть возможность, если автор выкладывает свой код на всеобщее обозрение.

Добавлено через 6 минут
ЗЫ кстати, вот какая огромная содержательная часть кода, реализующая первую часть моего алгоритма (да, сишный стиль и однобуквенные переменные, все по традиции )
C
1
2
3
4
5
6
7
8
9
10
        int s1 = a1, s2 = m;
        for (int i=9; i>0; i--) {
            if (d[i] == 0) continue;
 
            int k = (dd[i] - (s2-s1)/i)/2;
            d2[i] = k<0 ? 0 : k;
            d1[i] = d[i] - d2[i];
            s1 += i*d1[i];
            s2 += i*d2[i];
        }
Добавлено через 1 минуту
gru74ik, плюс тебе за честность и активную позицию.

Добавлено через 5 минут
Насчет чисел до 1000 - единственное изменение в коде, это начинать счетчик цикла не с 9 а с 1000 - и все
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,991
Записей в блоге: 32
23.09.2014, 16:39
Вот скрин работы. Пояснения: первая строка - 1 цифра - первая цифра исходного массива, 2 число - m.
далее строки из трех колонок, каждая строка - количество цифр данного разряда (от 0, которых 0, до 9) - 1 колонка прибавляемые.вторая - отнимаемые, 3 - исходные. Предпоследняя строка - суммы прибавляемых и отнимаемых цифр, к прибавляемым прибавляется первая неизменяемая цифра (перед ней не можем поменять знак, она всегда с плюсом), к отнимаемым цифрам прибавляется m. Если суммы равны - пасьянс сошелся, что и наблюдается.
Изображения
 
0
221 / 166 / 47
Регистрация: 17.07.2012
Сообщений: 587
23.09.2014, 16:42
_Ivana, не отправляются сообщения
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,991
Записей в блоге: 32
23.09.2014, 16:44
SlavaSSU, в каком смысле? В личку что-ли? Или сюда в тему? В любом случае я вряд ли могу управлять этим.
0
221 / 166 / 47
Регистрация: 17.07.2012
Сообщений: 587
23.09.2014, 16:48
_Ivana, сюда

Добавлено через 2 минуты
_Ivana, короткие отправляются, а код нет!

Добавлено через 1 минуту
_Ivana, короче вот тоже потесть типо того

http://pastebin.com/aaSEK9Cc
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,991
Записей в блоге: 32
23.09.2014, 17:06
Я вот только что отправил код. Знаю, что стоит ограничение на 10000 символов что-ли, сам сталкивался когда длинный код пытался отправить. Можешь через вложение - через файл, можешь его даже заархивировать.

Добавлено через 3 минуты
Цитата Сообщение от SlavaSSU Посмотреть сообщение
короче вот тоже потесть типо того
Ну тестить код всегда проще его автору Если пришлешь мне массив исходных чисел (любой длины) и число m - могу запустить на своем алгоритме, выдать результат типа как на скрине, объяснить его и подтвердить, что считается мгновенно (но это и по коду видно - цикл в 9 итераций с несколькими арифметическими целочисленными операциями внутри - для любой длины исходного массива).

Добавлено через 49 секунд
ЗЫ судя по дублям сообщений у тебя действительно какие-то траблы с форумом.

Добавлено через 13 минут
SlavaSSU, соревнование можно считать завершенным или вы все-таки хотите проверки?
0
221 / 166 / 47
Регистрация: 17.07.2012
Сообщений: 587
23.09.2014, 17:07
_Ivana, как сюда файл текстовый скинуть?
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
23.09.2014, 17:08
SlavaSSU, расширенный режим -> управление вложением -> выбираете файл.
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,991
Записей в блоге: 32
23.09.2014, 17:09
Я сам не спец по возможностям форума, но если не влезает в само сообщение в тег спойлер, то архивируй и кидай как вложение в расширенной форме ответа.
0
221 / 166 / 47
Регистрация: 17.07.2012
Сообщений: 587
23.09.2014, 17:11
_Ivana, я потестить хочу твое.
0
221 / 166 / 47
Регистрация: 17.07.2012
Сообщений: 587
23.09.2014, 17:18
TEST.rar
0
221 / 166 / 47
Регистрация: 17.07.2012
Сообщений: 587
23.09.2014, 17:21
для всех тестов ответ YES

Добавлено через 1 минуту
S_el, спс помогло. только правда не с 1 раза загрузилось)
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,991
Записей в блоге: 32
23.09.2014, 17:28
SlavaSSU, у меня пока не дописана вторая часть алгоритма. Она требуется в случаях, когда первая не находит решение, и я это знаю. Вот мой полный код
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
int _tmain(int argc, _TCHAR* argv[])
{
    int d[10], d1[10], d2[10];
    while (1) {
        srand(time(0));
        int m = rand()%1000 + 500;
        int a1 = rand()%9 + 1;
        cout<<endl<<a1<<"     "<<m<<endl;
 
        for(int i=0; i<10; i++) {d[i] = rand() + 1; d1[i]=0, d2[i]=0;}      
        d[0] = 0;   
 
        int s1 = a1, s2 = m;
        for (int i=9; i>0; i--) {
            if (d[i] == 0) continue;
 
            int k = (d[i] - (s2-s1)/i)/2;
            d2[i] = k<0 ? 0 : k;
            d1[i] = d[i] - d2[i];
            s1 += i*d1[i];
            s2 += i*d2[i];
        }
        for(int i=0; i<10; i++) cout<<d1[i]<<"     "<<d2[i]<<"     "<<d[i]<<endl;
        cout<<endl<<s1<<"     "<<s2<<endl<<(s1-s2)<<"     "<<(s2-s1)<<endl<<endl;
        system("pause");
    }
    return 0;
}
Добавлено через 42 секунды
Цитата Сообщение от SlavaSSU Посмотреть сообщение
для всех тестов ответ YES
хорошо, сейчас попробую распарсить и протестить.

Добавлено через 3 минуты
SlavaSSU, рассказывай что у тебя там значит в файле. И можно ли его напрямую в код скопировать массив, и есть ли там его длина и число m.
0
221 / 166 / 47
Регистрация: 17.07.2012
Сообщений: 587
23.09.2014, 17:31
_Ivana, ну там сначала 2 числа n и m а потом n циферок от 1 до 9. и так много тестов.
ну пишешь вначале мейна
freopen("input.txt", "r", stdin);
и в этот файл инпут копируешь тесты.

ну и потом
while(cin >> n >> m) { read n numbers; process... }
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,991
Записей в блоге: 32
23.09.2014, 17:38
SlavaSSU, напиши полный код в теге С++ как загрузить в массив содержимое твоих тестов. Чтобы я его скопипастил и не мучался с разбирательством.

Добавлено через 2 минуты
Я же тебе скинул полный код своей программы, а не стал писать типа "ну вот заполняешь необходимые входные данные и вызываешь это цикл"....
0
221 / 166 / 47
Регистрация: 17.07.2012
Сообщений: 587
23.09.2014, 17:51
_Ivana,

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
#include <iostream>
#include <iomanip>
#include <stdio.h>
#include <algorithm>
 
using namespace std;
 
int a[1111];
int n, m;
 
int main()
{
    // надо создать этот файл и скопировать туда тесты
    freopen("input.txt", "r", stdin);
    //
 
 
    while(cin >> n >> m)
    {
                // щас ты обрабатываешь 1 тест.
        for(int i = 0; i < n; i++)
            cin >> a[i];
 
        //do algo
    }
 
    return 0;
}
Добавлено через 4 минуты
_Ivana, а еще скажи что твоя прога выводит если ответ yes? ну вводить как я понял надо m и потом количество вхождений каждой цифры?

Добавлено через 3 минуты
_Ivana, и что такое a1?

Добавлено через 1 минуту
_Ivana, a1 это длина массива цифр?
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,991
Записей в блоге: 32
23.09.2014, 17:55
SlavaSSU, пока пытаюсь разобраться как читать твой файл, навскидку не получается. Давай помощь на помощь - ты мне все-таки рассказываешь как получить нужный массив и его размер, а я тебе про свой код. Вот кусок кода. который должен считывать файл, но он вешает программу:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int _tmain(int argc, _TCHAR* argv[])
{
    int d[10], d1[10], d2[10];
 
    int a[1111];
    int n, m;
 
    // надо создать этот файл и скопировать туда тесты
    freopen("test0.txt", "r", stdin);
 
    cin >> n >> m;
    cout<<n<<"   "<<m<<endl;
 
    system("pause");
 
 
    while(cin >> n >> m)
    {
        for(int i = 0; i < n; i++) cin >> a[i];
 
        for(int i=0; i<n; i++) cout<<a[i]<<endl;
        system("pause");
0
221 / 166 / 47
Регистрация: 17.07.2012
Сообщений: 587
23.09.2014, 17:56
_Ivana, я может не так понимаю, но твои прога не работает у меня на простых тестах

3 6
1 2 3

другой тест

1 5
5

Добавлено через 1 минуту
_Ivana, cin >> n >> m в 11 строчке не нужны!
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,991
Записей в блоге: 32
23.09.2014, 18:13
Вот мой код прожевывает твои тесты. Только уродское деление на 0 надо убрать - вставил потому что без него окно консоли закрывается и не ждет паузу даже.
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
#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <stdio.h>
#include <time.h>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    int d[10], d1[10], d2[10];
    int a[1111], n, m;
    freopen("TESTS.txt", "r", stdin);
 
    while(cin >> n >> m)
    {
        for(int i = 0; i < n; i++) cin >> a[i];
        //for(int i=0; i<n; i++) cout<<a[i]<<endl;
 
        int a1 = a[0];
        cout<<endl<<"a1 = "<<a1<<", m = "<<m<<endl;
        for(int i=0; i<10; i++) {d[i]=0; d1[i]=0; d2[i]=0;}
        for(int i=1; i<n; i++) d[a[i]] += 1;
 
        int s1 = a1, s2 = m;
        for (int i=9; i>0; i--) {
            if (d[i] == 0) continue;
 
            int k = (d[i] - (s2-s1)/i)/2;
            d2[i] = k<0 ? 0 : k;
            d1[i] = d[i] - d2[i];
            s1 += i*d1[i];
            s2 += i*d2[i];
        }
        for(int i=0; i<10; i++) cout<<d1[i]<<"     "<<d2[i]<<"     "<<d[i]<<endl;
        cout<<endl<<s1<<"     "<<s2<<endl<<(s1-s2)<<"     "<<(s2-s1)<<endl;
        if ((s1-s2)==0) cout<<"YES!"<<endl; else cout<<"NO!"<<endl; 
    }
    m = m/0;
    system("pause");
    return 0;
}
Добавлено через 2 минуты
Теперь по вопросам: а1 - это первая цифра исходного массива, мы не можем поставить перед ней унарный минус. Перед остальными можем и + и -.
Насчет неотработки на простых примерах - я третий раз пишу, что не дописана вторая часть алгоритма. И я это знаю. Но также знаю как ее написать, но пока бился с другим.

Добавлено через 1 минуту
Помоги мне убрать деление на 0 и чтобы консоль не закрывалась и можно было смотреть все тесты.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.09.2014, 18:13

Получить число, состоящее из суммы цифр, если оно четное - найти сумму двух первых цифр, иначе - разность
Даны цифры двух целых чисел: трехзначного а3а2а1 и двусмысленного b2b1 где а1b1- число единиц, а2b2 число десятков, а 3 - число сотен....

Разрезать круглую пиццу на заданное число кусков, делая заданное число прямолинейных разрезов ножом
Помогите, пожалуйста решить задачу. Дана пицца, имеющая форму круга. Её нужно разрезать на заданное число кусков, делая заданное число...

Разделить на два заданное четное натуральное число с количеством цифр меньше 100
Надо разделить на два заданное четное натуральное число с количеством цифр меньше 100. Нужно использовать не арифметические, а символьные...

После каждого элемента массива состоящего из одинаковых цифр вставить заданное число
Дан массив положительных чисел а1,а2,а3…аN . Вставить в него после каждого числа, состоящего из одинаковых циф #include...

Проверить, делится ли без остатка заданное натуральное число на каждую из своих цифр
Мне нужно написать прогу, но нужно выполнить её без использования строк и массивов задание такое: Проверить, делится ли заданное...


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы ## О чём эта статья В процессе построения ОДУ-модели (система дифференциальных. . .
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет) Содержание проекта Симуляция вековой (50 лет) экологической сукцессии в почве леса Основные участники: АМ-гриб, ЭКМ-гриб,. . .
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru