Cerința
Pentru un număr natural m
numim rest mare
cel mai mare rest pe care îl obţinem împărţind numărul m
la toate numerele naturale de la 1
la m
. Fiind dat un număr natural n
, se determină pentru fiecare număr de la 1
la n
numărul rest mare
, iar aceste resturi mari se însumează. Se cere aflarea acestei sume.
Date de intrare
Fișierul de intrare restmare.in
conține pe prima linie numărul n
.
Date de ieșire
Fișierul de ieșire restmare.out
va conține pe prima linie numărul S
, reprezentând suma resturilor mari ale tuturor numerelor naturale de la 1
la n
.
Restricții și precizări
1 ≤ n ≤ 2.000.000.000
Exemplu
restmare.in
3
restmare.out
1
Explicație
Resturile mari ale numerelor 1,2,3
sunt respectiv 0,0,1
, deci suma lor este 1
.
#include <bits/stdc++.h> using namespace std; ifstream cin("restmare.in"); ofstream cout("restmare.out"); int main() { int n; cin >> n; long long int s=0; if(n%2==0) s=1LL * (1+(n/2-1))*(n-2)/2; else s=1LL * (1+((n-1)/2-1))*((n-1)-2)/2+(n-1)/2; cout << s; return 0; }