Grade 10 · Subprograms (functions)Citește în română
Function for the sum of digits
Original: Funcție pentru suma cifrelor
The idea
The function sumaCifre(x) receives the number by value (it works on a copy, so the x in main is not destroyed) and returns the sum of its digits. In main we read n numbers and keep the one with the largest digit sum; on ties the first one found stays (we compare with strict >).
Original description (Romanian)
Funcția sumaCifre(x) primește numărul prin valoare (lucrează pe o copie, deci x-ul din main nu se strică) și întoarce suma cifrelor. În main citim n numere și păstrăm numărul cu suma cifrelor cea mai mare; la egalitate rămâne primul găsit (comparăm cu > strict).
- Complexity
- O(n * k), where k is the number of digits of a number
- Grade
- Grade 10 (Clasa a X-a)
- Chapter
- Subprograms (functions)
Examples
Input
4 123 99 405 18
Expected output
99
Input
3 0 7 70
Expected output
7
The code
Comments are in Romanian, as in the original collection. Edit freely: you can reset at any time.
/*
* Titlu: Funcție pentru suma cifrelor
* Clasa: 10
* Capitol: Subprograme (funcții)
* Descriere: Funcția sumaCifre(x) primește numărul prin valoare (lucrează pe o
* copie, deci x-ul din main nu se strică) și întoarce suma cifrelor.
* În main citim n numere și păstrăm numărul cu suma cifrelor cea mai
* mare; la egalitate rămâne primul găsit (comparăm cu > strict).
* Complexitate: O(n * k), unde k este numărul de cifre al unui număr
*
* Exemplu
* Intrare:
* 4
* 123 99 405 18
* Ieșire: 99
*
* Exemplu
* Intrare:
* 3
* 0 7 70
* Ieșire: 7
*/
#include <iostream>
using namespace std;
int sumaCifre(int x)
{
int s = 0;
while (x > 0)
{
s = s + x % 10;
x = x / 10;
}
return s;
}
int main()
{
int n, x;
cin >> n;
int celMaiBun = -1, sumaMaxima = -1;
for (int i = 0; i < n; i++)
{
cin >> x;
int s = sumaCifre(x);
if (s > sumaMaxima)
{
sumaMaxima = s;
celMaiBun = x;
}
}
cout << celMaiBun << '\n';
return 0;
}
Runs on a real g++ (C++17, -O2) through Compiler Explorer. Keep runs short; there's a time limit.