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

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

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

Помoгите доделать задaчку - C++

23.12.2011, 10:59. Просмотров 776. Ответов 3
Метки нет (Все метки)

Вот условия:
********/index.asp?main=task&id_task=543

Или:

В N корзинах находятся золотые монеты. Корзины пронумерованы числами от 1 до N. Во всех корзинах, кроме одной, монеты весят по w граммов. В одной корзине монеты фальшивые и весят w–d граммов. Волшебник берет 1 монету из первой корзины, 2 монеты из второй корзины, и так далее, и, наконец, N-1 монету из (N-1)-й корзины. Из N-й корзины он не берет ничего. Он взвешивает взятые монеты и сразу указывает на корзину с фальшивыми монетами.

Требуется написать программу, которая выполняет это волшебство.

Входные данные:
Входной файл INPUT.TXT содержит четыре целых числа: N, w, d и P – суммарного веса отобранных монет (2 ≤ N ≤ 8000, 1 ≤ d < w ≤ 30).
Выходные данные:
В выходной файл OUTPUT.TXT выведите номер корзины с фальшивыми монетами.



Кажется правильно решил, но возникает ошибка на 6 тесте тут ********
помогите дописать

Моё решение:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void main()
{
   FILE *bufi,*bufo;
   long int N,n,w,d,P,s,f;
   bufi = fopen("input.txt", "r");
   fscanf(bufi,"%ld %ld %ld %ld",&N,&w,&d,&P);
   bufo=fopen("output.txt", "w");
   n=N-1;
   s=((1+n)/2)*n*w-P;
   f=s/d;
   if(s==0)
     fprintf(bufo, "%ld",N );
        else
            if(w-d==1)
              fprintf(bufo,"%ld",s);
                    else
                        fprintf(bufo,"%ld",f);
 
   fclose(bufi);
   fclose(bufo);
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.12.2011, 10:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Помoгите доделать задaчку (C++):

Ошибку помoгите найти - C++
sorry

Помoгите преобразовать программу! - C++
Добрый день! Помогите пожалуйста преобразовать программу. В общем нужна создать класс Матрица, а затем делать вычисления. Еще бы желательно...

Помoгите найти ошибку в коде! - C++
#include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;conio.h&gt; using namespace std; enum firms { Sonic, ...

Класс круговая очередь Помoгите плз - C++
У меня задание создать круговую очередь( я тока начал изучать классы так что многово не понимаю ) помогите исправить ошибки плз ...

не могу доделать. - C++
составить программу для проверки утверждения: «Результатами вычислений по формуле x2 + x + 41 при 0 &lt;x&lt; 40 являются простые числа». Все...

Доделать код - C++
Помогите доделать код, нужно добавить укзатели можете помочь Вот код: # include &lt;windows.h&gt; # include &lt;locale.h&gt; # include...

3
alkagolik
Заблокирован
23.12.2011, 12:04 #2
Цитата Сообщение от Songe Посмотреть сообщение
s=((1+n)/2)*n*w
откуда эта формула? она не работает. Пусть i - номер корзины, http://www.cyberforum.ru/cgi-bin/latex.cgi?x_{i} - масса настоящих монет в i - той корзине, http://www.cyberforum.ru/cgi-bin/latex.cgi?\alpha - разница масс настоящей и фальшивой монет. Решение http://www.cyberforum.ru/cgi-bin/latex.cgi?\frac{\left(\sum_{i = 1}^{N - 1}x_{i} \right) - P}{\alpha}, http://www.cyberforum.ru/cgi-bin/latex.cgi?x_{i}=w*i если ответ = 0, то фуфло в последней корзине, иначе фуфло в корзине с номером ответ.
1
Songe
0 / 0 / 0
Регистрация: 23.12.2011
Сообщений: 7
23.12.2011, 18:19  [ТС] #3
Цитата Сообщение от alkagolik Посмотреть сообщение
откуда эта формула? она не работает. Пусть i - номер корзины, http://www.cyberforum.ru/cgi-bin/latex.cgi?x_{i} - масса настоящих монет в i - той корзине, http://www.cyberforum.ru/cgi-bin/latex.cgi?\alpha - разница масс настоящей и фальшивой монет. Решение http://www.cyberforum.ru/cgi-bin/latex.cgi?\frac{\left(\sum_{i = 1}^{N - 1}x_{i} \right) - P}{\alpha}, http://www.cyberforum.ru/cgi-bin/latex.cgi?x_{i}=w*i если ответ = 0, то фуфло в последней корзине, иначе фуфло в корзине с номером ответ.
эта формула - арифметическая прогрессия, умноженная на массу обычной монеты и ещё минус вес всех отобранных монет. "s" Это как ваше "Xi - P", a "альфа" - это и есть "d" , а "f" это ваш ответ, и про последнюю корзину я написал
Так что эта формула ещё как работает =)


Всё ещё нужна помощь
0
alkagolik
Заблокирован
24.12.2011, 04:55 #4
Цитата Сообщение от Songe Посмотреть сообщение
Так что эта формула ещё как работает =)
я бы не отвечал так если бы не проверил программно и на бумаге. Сумма первых n членов арифметической прогрессии
http://www.cyberforum.ru/cgi-bin/latex.cgi?S_{n}= \sum_ {i = 1}^{n}x_{i}=n\frac{2x_{1} +d(n - 1)}{2}, де d - шаг прогрессии. Может так будет понятней...

Добавлено через 12 минут
суммируем сколько должно быть массы, от этого отнимаем фактическую массу, результат делим на разницу масс.
0
24.12.2011, 04:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.12.2011, 04:55
Привет! Вот еще темы с ответами:

Не могу доделать - C++
Вот код: #include &lt;iostream&gt; #include &lt;vector&gt; #include &lt;algorithm&gt; using namespace std; int main() { int temp; vector...

доделать программу - C++
#include &lt;iostream&gt; #include &lt;string&gt; #include &lt;fstream&gt; using namespace std; int main() { setlocale(LC_ALL,&quot;Russian&quot;); fstream...

Доделать программу С++ - C++
Помогите пожалуйста доделать программу. Нужно , чтобы при вводе дробных чисел программа выдавала сообщение &quot;Нужно ввести целое число&quot; ...

Доделать код - C++
Программа удаляет из файла определённые символы: &quot;A&quot;, &quot;b&quot;, &quot;C&quot;, &quot;d&quot;. Проблема в том, что я не знаю как добавить условия для удаления...


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

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

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