RGB
Orice culoare poate fi reprezentată drept o combinație de intensități de roșu (RED), verde (GREEN) și albastru (BLUE). Calculatorul tău folosește, cel mai probabil, culori reprezentate pe 24
de biți, câte 8
rezervați fiecărei dintre cele trei culori anterior menționate.
Gradient
Se consideră un gradient de ordin n
dintre două culori x
și y
totalitatea culorilor prin care trece culoarea x
pentru a ajunge culoarea y
în exact n
pași. De exemplu, pentru o culoare x=(0,10,20)
și o culoare y=(0,40,80)
, culorile ce compun gradientul de 4
pași sunt:
(0,10,20)
;(0,20,40)
;(0,30,60)
;(0,40,80)
;
Există cazuri în care una sau mai multe culori conține valori raționale. În acest caz, doar partea lor întreagă va fi luată în considerare.
Cerința
Dându-se două culori valide (reprezentate fiecare prin câte 3
numere) și numărul n
, calculați toate culorile prin care va trece prima pentru a deveni a doua.
Date de intrare
Programul citește de la tastatură numerele R1
, G1
, B1
, R2
, G2
, B2
, n
, în această ordine, cu semnificația din enunț.
Date de ieșire
Programul va afișa pe ecran n
perechi (câte una pe linie) de câte trei numere fiecare, separate printr-o virgulă și un spațiu (,
), având semnificația din enunț.
Restricții și precizări
2 ≤ n ≤ 1000
;- Culorile inițiale sunt valide;
- Valorile primei culori nu sunt neapărat mai mici decât valorile celei de a doua.
Exemplu
Intrare
0 10 20 0 40 80 4
Ieșire
0, 10, 20 0, 20, 40 0, 30, 60 0, 40, 80
Explicație
Acesta este exemplul descris în enunț.
…sau:
Intrare
0 0 0 23 2 20 3
Ieșire
0, 0, 0 11, 1, 10 23, 2, 20
…sau:
Intrare
23 2 20 0 0 0 3
Ieșire
23, 2, 20 11, 1, 10 0, 0, 0
#include <bits/stdc++.h> using namespace std; int r, g, b, r1, r2, g1, g2, b1, b2, n, i; int main() { cin >> r1 >> g1 >> b1 >> r2 >> g2 >> b2 >> n; r = r2 - r1, g = g2 - g1, b = b2 - b1, --n; cout << r1 << ", " << g1 << ", " << b1 << '\n'; for (int i = 1; i <= n; ++i) cout << (int)(r1 + r * i / (double)n) << ", " << (int)(g1 + g * i / (double)n) << ", " << (int)(b1 + b * i / (double)n) << '\n'; return 0; }