Pesquisar este blog

Livros Recomendados

Mostrando postagens com marcador 1099. Mostrar todas as postagens
Mostrando postagens com marcador 1099. Mostrar todas as postagens

domingo, 27 de dezembro 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:

#include <stdio.h>
int main(){
    int n,i,a,b,c,k;
    scanf("%i", &n);
    for (i=0; i<n; i++){
        c=0;
        scanf("%i %i", &a, &b);
        if (a>b) {
            a+=b;
            b=a-b;
            a-=b;
        }
        for (k=a+1;k<b;k++){
            if (k%2==1) c+=k;
        }
        printf("%i\n",c);
    }
    return 0;
}

URI - 1099 - Soma de Ímpares Consecutivos II - Iniciante - C++ - Solução Alternativa

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:

#include <iostream>

using namespace std;

int main() {
    int n, i, a, b, c, k;
    
    cin >> n;
    
    for (i = 0; i < n; i++){
        
        c = 0;
        cin >> a >> b;
        
        if (a > b) {
            a += b;
            b = a - b;
            a -= b;
        }
        
        for (k = a + 1; k < b; k++) {
            if (k & 1)
                c += k;
        }
        cout << c << endl;
    }
    return 0;
}

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; 
} 

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