znalezienie 9 liczb w cpp

0

Witam!

Napisałem taki program:

#include<iostream>
using namespace std;

int main()
{
    int l,w;
    cin>>l;
    
    while(l<=900)
    {
    srand(time(NULL));
    w=rand()%900+1;
    l+=w;
    cout<<w<<endl;
    }
    system("pause");
    return 0;
}    
     

Problem w tym, że nie wiem jak zrobić, żeby program znajdywał 9 kolejnych liczb naturalnych, których suma wynosi 900, dlatego proszę Was o pomoc.

0

Żeby rozwiązać takie zadanie musisz używać brute force? Coś ty miał z matmatyki w podstawówce?
x+(x+1)+(x+2)+...+(x+8) = 9x + 36 = 900
9x = 864
x = 96

więc są to liczby 96,97,...,104

0

Dzięki za odp.

Chodzi mi o taki problem, że jak wprowadze sobie np. liczbe 5, to ma mi znaleźć 9 takich kolejnych liczb, aby ich suma wynosiła 900

0

A do czego to 5 ma służyć? Minimalna wartość ciągu (ai) długości n, dla którego Si = x wyniesie x / n - (n - 1) / 2 (dla różnicy ciągu równej 1).
Na przykład, dla x = 900; n = 9, ciąg ten zacznie się od:
900 / 9 - (9 - 1) / 2 = 96 (czyli się zgadza)

0

@gubbi podałem ci algorytm wg którego należy to liczyć. Której części nie rozumiesz? Przypadek ogólny:
Jeśli użytkownik podaje liczbę N która ma być sumą, oraz liczbę M która ma być ilością składników to liczysz to tak:
Mx = N - (suma od 1 do M-1) = N - (M(M-1)/2)
czyli
x = (N-(M*(M-1)/2))/M = (N/M) - (M-1)/2

W przypadku który dawałeś wyżej
N = 900
M = 9
x = N/M - (M-1)/2 = 900/9 - 8/2 = 100 - 4 = 96

Czyli twój program sprowadza się do wczytania N i M a potem policzenia
x = (N-(M*(M-1)/2))/M = (N/M) - (M-1)/2

Oczywiście trzeba sprawdzić czy daje nam to wynik całkowity, ale to już techniczna sprawa.

0

na przykład 5 jest jedną z 9 liczb, czyli zostaje nam znaleźienie jeszcze 8

0

Ale o czym ty mówisz? Czy jest ta twoja nieszczęsna 5? Napisałeś ze chodzi o 9 KOLEJNYCH LICZB NATURALNYCH. Skoro znamy jedną z liczb to znamy wszystkie...

1 użytkowników online, w tym zalogowanych: 0, gości: 1