Informatică, întrebare adresată de AgcBlue, 8 ani în urmă


ESTE URGENT VA ROG AJUTATI-MA!!!

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.


Problema este RestMare de pe PbInfo:
https://www.pbinfo.ro/?pagina=probleme&id=1858

Răspunsuri la întrebare

Răspuns de Ajutooooooor
18
Hey. Am 100 de puncte pe ea. Enjoy!
#include <iostream>#include <fstream>
using namespace std;
ifstream in ("restmare.in");ofstream out ("restmare.out");
long long int n,pana_unde,suma;
int main(){    in >> n;
    if(n>2)    {

    if(n%2==1)    {        pana_unde = n/2;        suma = (pana_unde*(pana_unde+1))/2 + ((pana_unde-1)*pana_unde)/2;    }    else    {        pana_unde = n/2-1;        suma = pana_unde*(pana_unde+1);    }
    }
    out << suma;
    return 0;}

AgcBlue: Multumesc mult!
Alte întrebări interesante