Digital y [Finales de la Blue Bridge Cup 2017]

Enlace de tema: Digital y
límite de tiempo: 1 segundo Límite de memoria: 256 MB

Descripción del título: El
matemático Gauss fue muy talentoso cuando era muy joven. El tema aritmético designado por el profesor una vez es: 1 + 2 +… + 100.
Gauss respondió de inmediato: ¡5050!
Esta vez tu misión es similar. Pero no se trata de sumar los números uno por uno, sino de sumar cada dígito del número. Entonces, la "suma" de 1 a 100 es: 901
de 10 a 15 es: 21, es decir: 1 + 0 + 1 + 1 + 1 + 2 + 1 + 3 + 1 + 4 + 1 + 5, esto Puede obtener resultados en cálculos orales.
Según esta "adición", ¿cuánto hay que sumar de 1 a 1000?
Salida:
genera un número entero para indicar la respuesta

El significado de la pregunta: es encontrar los dígitos de cada número del 1 al 1000 y sumarlos, y luego generar el resultado de la acumulación.
Idea: Vuélvalo a recorrer y escriba una función para encontrar la suma de dígitos de cada número.

El código de función para encontrar la suma digital:

int f(int n)
{
    
    
    int n_sum=0;  //存放数位和结果
    while(n) //每位都加完后,n变为0了,循环就结束了
    {
    
    
        int temp=n%10; //求出每一位的数(最后面的那位数字)
        n_sum+=temp; // 每位数累加上去
        n/=10; //最后一位累加过后,将n除以10(让百位变十位,十位变个位,以此类推)
    }
    return n_sum; // 返回n这个数的数位和
}

Inteligente, debes entender [ji ji]
Inserte la descripción de la imagen aquí
Entonces lo que tenemos que hacer es recorrerlo nuevamente, y luego llamar a la función que calcula la suma de dígitos, establecer una variable temporal, recibir la suma de dígitos de cada número devuelto y continuar acumulando Da la suma, y ​​luego podemos generar la suma al final. También podemos comentar el código e imprimir el resultado de salida.

Código completo:

#include<iostream>
using namespace std;
typedef long long ll;

int f(int n)
{
    
    
    int n_sum=0;
    while(n)
    {
    
    
        int temp=n%10;
        n_sum+=temp;
        n/=10;
    }
    return n_sum;
}

int main()
{
    
    
    ll sum=0;
    for(int i=1;i<=1000;i++)
    {
    
    
        int x=f(i);
        sum+=x;
    }
    cout<<sum<<endl;
    return 0;
}

No te olvides de darle Me gusta después de leerlo, ¡gracias por tu apoyo!
Si estás en una terminal de computadora, también puedes ver la "conexión triple de una tecla" en la esquina inferior derecha, haz clic derecho [jaja] ¡

Inserte la descripción de la imagen aquí
Vamos!

¡Trabajar juntos!

Keafmd

Supongo que te gusta

Origin blog.csdn.net/weixin_43883917/article/details/109255775
Recomendado
Clasificación