326
Cerința
Se dă un număr natural n
. Să se determine numărul din intervalul [1,n]
care are număr maxim de divizori. Dacă există mai multe asemenea numere, se va afișa cel mai mic dintre ele.
Date de intrare
Programul citește de la tastatură numărul n
.
Date de ieşire
Programul va afișa pe ecran valoarea cerută.
Restricții și precizări
0 < n <= 100.000
Exemplu
Intrare
20
Ieșire
12
Explicații:
12
, 18
şi 20
au număr maxim de divizori, dar 12
este cel mai mic.
#include <bits/stdc++.h> using namespace std; int d(int n) { int cnt=0; for (int i = 1 ; i * i <= n; ++i) { if (n%i==0) cnt+=2; if (i*i==n) cnt--; } return cnt; } int main() { int n; cin >> n; int max=0; int a=0; for (int i = 1; i <= n; ++i) { if (d(i)>max) max=d(i) , a=i; } cout << a; }
Comentarii