fbpx

Problema #1858 – RestMare – Rezolvari PBInfo

de Mihai-Alexandru

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;    
}
Comentarii

S-ar putea sa iti placa