Piple21
Rozwiązane

Witam, bardzo proszę o pomoc w napisaniu takiego programu w języku c++. Z góry dziękuję za pomoc:D Daję naj!

Jaś zbiera mandarynki do dwóch koszyków. Tata obiecał mu, że zapłata za jego pracę będzie w zależności od liczby zebranych owoców. Jeśli w pierwszym koszyku będzie x mandarynek, a w drugim y, to zapłata jaką uzyska Jaś to nwd(x, y) + nww(x, y). Dokładniej:
• nwd(a, b) to największy wspólny dzielnik liczb a i b. Przykładowo nwd(4,6) = 2,
• nww(a, b) to najmniejsza wspólna wielokrotność liczb a i b. Przykładowo nww(4,6) = 12.
Wiemy, że maksymalna pojemność koszyka to n. Pomóż Jasiowi i powiedz, jaki maksymalny zarobek może osiągnąć!
Wejście:
Pierwszy wiersz wejścia zawiera jedną liczbę całkowitą n (1 <= n <= 10^9), gdzie n oznacza pojemność koszyka.
Zakładamy, że w testach wartych około 50% punktów zachodzi dodatkowy warunek n <= 10^3.
Wyjście:
Pierwszy i jedyny wiersz wyjścia powinien zawierać jedną liczbę całkowitą, równą maksymalnemu zarobkowi, jaki może osiągnąć Jasio.
Przykład:
Dla danych wejściowych:
3
poprawnym wynikiem jest:
7



Odpowiedź :

REGNAD

Odpowiedź:

#include<iostream>

#include <numeric>

#include <algorithm>

int main() {

   int n;

   std::cin >> n;

   int maxNWW = 0;

   int maxNWD = 0;

   for(int i = 1; i < n; i++){

       maxNWW = std::max(maxNWW, std::lcm(n, i));

       maxNWD = std::max(maxNWD, std::gcd(n, i));

   }

   std::cout << maxNWW + maxNWD;

   return 0;

}

Wyjaśnienie:

Dla takich wartości wychodzą prawidlówe wyniki. Moim zdaniem powinno być w pętli <= ale wtedy jest inaczej. Dodaję, ale nie jestem pewny czy dobrze, może kogoś zainspiruje