[C++] Program sprawdzający wszystkie kombinacje liczbowe


(Michalmatma32) #1

Mam takie zadanie:

Znana sieć handlowa przygotowała dla swoich klientów ofertęspecjalną. Promocja obejmujeprodukty umieszczone na jednym regale. Jeśli cena danego zestaw kolejnych produktów jest wielokrotnością pewnej kwoty, kupujący otrzymuje specjalny rabat. Oblicz, na ile sposobów można dobrać kolejne produkty z regału promocyjnego tak, aby otrzymać rabat.

Wejście

W pierwszym wierszu standardowego wejścia zapisano dwie liczby całkowite dodatnie, oddzielone pojedynczym odstępem: liczbę produktów P(2≤P≤1000000), oraz kwotę promocyjną K(1≤K≤1000). Wdrugim wierszu zapisano P wartości całkowitychoddzielonych spacją ceny kolejnych produktów na regale promocyjnym (wielkości te nie przekraczają 100).

Wyjście

W pierwszym wierszu standardowego wyjścia zapisz, na ile sposobów można dokonać opisanego wyboru.

Szukałem algorytmu wypisującego wszystkie kombinacje cenowe, ale nie udało mi się go znaleźć. Po za tym zastanawiam się czy to nie byłoby zbyt wolne sprawdzać wszystkie kombinacje po kolei. Może ktoś wie jak to rozwiązać?


(Semtex) #2

Po wyjaśnieniach na Pw temat przywracam.


(czeski14) #3

Cześć,


(Michalmatma32) #4

Dzięki za pomoc. Wszystko działa.


(kostek135) #5

Usunałem poprzednie rozważania, bo nie miały one sensu, nie doczytałem zadania, z tym, że ma być to wielokrotność , uznałem, że chodzi o sumowanie to pewnej stałej liczby. Nie miało to sensu, więc wykasowałem.


(czeski14) #6

Moje rozwiązanie opiera się na pewnym założeniu, które wynika z treści zadania, a mianowicie

 

Pogrubiony fragment mówi wszystko. Mają to być kolejne produkty. Czyli jeśli po drugim przeskoku dzielenie modulo jest różne od zera ma być przerwanie. Bo elementy 1, 2, 4, 5, 6, 7, 8, 9, 10 to już nie są kolejne elementy idąc kolegi wyżej tokiem myślenia.

 

 

EDIT: Bądź też zadanie jest niesprecyzowane.


(kostek135) #7

Przeczytaj mój post ze zrozumieniem. Jest 10 elementów każdy o wartości 1. Masz KP = 10 jaka powinna być odpowiedź? Twój program zawsze w tym przypadku przerwie dopasowywanie podciągu po dwóch elementach. ze względu na warunek przerwania pętli. Ten warunek zapisałeś następująco: Jeśli dwa elementy nie dają ci reszty z modulo równej 0 to przerywasz, ale nie sprawdzasz czy nie robią tego spójne łańcuchy, które są dłuższe np. łańcuchy 3 kolejnych elementów.