Pesquisar este blog

Livros Recomendados

sábado, 6 de junho de 2020

URI - 1099 - Soma de Ímpares Consecutivos II - Iniciante - C++

Plataforma: URI
Problema1099

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++

Solução:
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

Postagem em destaque

URI (BEECROWD) - 2158 - Helping Uncle Cláudio (Ajudando o Tio Cláudio) - Matemática - C, C++ e Haskell

Buenas! Estou aqui mais uma vez para resolver um problema de Matemática! Agora tenho resolvido alguns dessa categoria, pra que vocês possam ...

Postagens mais visitadas