Pesquisar este blog

Livros Recomendados

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

domingo, 28 de fevereiro de 2021

URI (BEECROWD) - 1936 - Fatorial - Ad-Hoc - C++

Plataforma: URI (BEECROWD)

Problema1936

Enunciado:

O fatorial de um número inteiro positivo N, denotado por N!, é definido como o produto dos inteiros positivos menores do que ou iguais a N. Por exemplo 4! = 4 × 3 × 2 × 1 = 24.

Dado um inteiro positivo N, você deve escrever um programa para determinar o menor número k tal que N = a1! + a2! + ... + ak!, onde cada ai, para 1 ≤ i ≤ k, é um número inteiro positivo.

Por exemplo, para N = 10 a resposta é 3, pois é possível escrever N como a soma de três números fatoriais: 10 = 3! + 2! + 2!. Para N = 25 a resposta é 2, pois é possível escrever N como a soma de dois números fatoriais: 25 = 4! + 1!.

Linguagem: C++

Solução:

#include <iostream>
using namespace std;

int main() {
    
    int fatoriais[] = {1, 1, 2, 6, 24, 120, 720, 5040, 40320};
    int n, i = 8, c = 0;
    cin >> n;
    
    while (n) {
        if (n >= fatoriais[i]) {
            c++;
            n -= fatoriais[i];
        }
        else
            i--;
    }
    
    cout << c << endl;

    return 0;
}

URI (BEECROWD) - 1936 - Fatorial - Ad-Hoc - C

Plataforma: URI (BEECROWD)

Problema1936

Enunciado:

O fatorial de um número inteiro positivo N, denotado por N!, é definido como o produto dos inteiros positivos menores do que ou iguais a N. Por exemplo 4! = 4 × 3 × 2 × 1 = 24.

Dado um inteiro positivo N, você deve escrever um programa para determinar o menor número k tal que N = a1! + a2! + ... + ak!, onde cada ai, para 1 ≤ i ≤ k, é um número inteiro positivo.

Por exemplo, para N = 10 a resposta é 3, pois é possível escrever N como a soma de três números fatoriais: 10 = 3! + 2! + 2!. Para N = 25 a resposta é 2, pois é possível escrever N como a soma de dois números fatoriais: 25 = 4! + 1!.

Linguagem: C

Solução:

#include <stdio.h>
int main() {
    
    int fatoriais[] = {1, 1, 2, 6, 24, 120, 720, 5040, 40320};
    int n, i = 8, c = 0;
    scanf("%d", &n);
    
    while (n) {
        if (n >= fatoriais[i]) {
            c++;
            n -= fatoriais[i];
        }
        else
            i--;
    }
    
    printf("%d\n", c);

    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