Se dă o matrice pătratică de n x n
numere naturale și o valoare naturală T
. Suma unei submatrice este suma elementelor submatricei.
Cerința
Să se determine numărul submatricelor care au suma mai mică sau egală cu T
.
Date de intrare
Programul citește de la tastatură, în această ordine, numerele T n A B C D
. Elementele matricei se vor genera după formula: a[i,j] = (A * i + B * j + C) % D
.
Date de ieșire
Programul va afișa pe ecran numărul S
, reprezentând numărul submatricelor de sumă mai mică sau egală cu T
.
Restricții și precizări
1 ≤ n, A, B, C, D ≤ 400
1 ≤ T ≤ 30.000
- O submatrice poate fi formată dintr-un singur element (este o submatrice cu o linie și o coloană).
Exemplu
Intrare
10 2 1 1 1 43
Ieșire
8
Explicație
Matricea generată este:
3 4
4 5
Singura submatrice care nu are suma mai mică sau egală cu T
este doar matricea întreagă.
Cum e corect?
cout < "As la info";
cout << "As la info";
cout >> "As la info";
Felicitări! Poți mai mult?
Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.
Greșit, dar nu-i bai!
Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.
Rezolvare
Iată rezolvarea de 100 de puncte pentru problema maru:
#include <bits/stdc++.h>
#define nmax 403
using namespace std;
int a[nmax][nmax], v[nmax], n, T;
void Citire()
{
int i, j, A, B, C, D;
cin >> T >> n >> A >> B >> C >> D;
for (i = 1; i <= n; i++)
for (j = 1; j <= n; j++)
a[i][j] = a[i - 1][j] + (A * i + B * j + C) % D;
}
void Rezolvare()
{
int L1, L2, i, j, s;
long long answer = 0;
for (L1 = 1; L1 <= n; L1++)
for (L2 = L1; L2 <= n; L2++)
{
for (i = 1; i <= n; i++)
v[i] = a[L2][i] - a[L1 - 1][i];
s = 0;
j = 1;
for (i = 1; i <= n; i++)
{
s += v[i];
while (s > T)
{
s -= v[j];
j++;
}
answer += (i - j + 1);
}
}
cout << answer << "\n";
}
int main()
{
Citire();
Rezolvare();
return 0;
}
Atenție
Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa .
Rezolvarea problemei #2943 maru
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #2943 maru de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.
Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!