Problema: 1099
Enunciado:
Leia um valor inteiro N que é a quantidade de casos de teste que vem a seguir. Cada caso de teste consiste de dois inteiros X e Y. Você deve apresentar a soma de todos os ímpares existentes entre X e Y.
Linguagem: C++
Primeiramente é verificado se x é maior do que y, neste caso os valores são invertidos.
Após, é feito a soma de todos os números impares entre x e y. Para fazer isso, é verificado o primeiro valor impar após x usando x = (x%2==0) ? x+1 : x+2; Nesta expressão, x receberá o próximo valor impar.
Posteriormente, um while é utilizado para fazer a soma de todos os valores impares, onde x é incrementado de 2 em 2 para que seja somado apenas os valores impares.
A solução poderia ser mais eficiente caso utilizasse uma fórmula fechada para calcular o somatório.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | #include <iostream> using namespace std; int main() { int n, x, y, aux; cin >>n; while(n--){ cin >> x >> y; int soma = 0; if(x>y){ // swap aux = x; x = y; y = aux; } x = (x%2==0)?x+1:x+2; while(x<y){ // sum odd numbers soma += x; x += 2; } cout << soma << endl; } return 0; } |
Nenhum comentário:
Postar um comentário