// PascalABC.NET 3.6.3
uses School;
function Divizors(n: integer): List<integer>;
begin
var L := new List<integer>;
L.Add(1);
L.Add(n);
if n > 3 then
var k := 2;
while (k * k <= n) and (k < 46341) do
if n mod k = 0 then
var t := n div k;
L.Add(k);
if k < t then L.Add(t)
else break
end;
Inc(k)
L.Sort;
Result := L
// 1
if ReadInteger.IsPrime then Println('YES')
else Println('NO');
// 2
ReadInteger.Factorize.First.Println;
// 3
var a := Divizors(ReadInteger);
Print(a.Count, a.Sum)
end.
Объяснение:
если индексы в нумерации от 0:
#include<iostream>
int main()
{
int i,j,m,n,K;
double S,a;
K=0;
S=0;
std::cin>>m>>n>>K;
for(int i=0; i<m; i++)
for(int j=0; j<n; j++)
std::cin>>a;
if(i+j==K) S+=a;
}
std::cout<<S;
return 0;
если индексы в нумерации от 1:
for(int i=1; i<=m; i++)
for(int j=1; j<=n; j++)
// PascalABC.NET 3.6.3
uses School;
function Divizors(n: integer): List<integer>;
begin
var L := new List<integer>;
L.Add(1);
L.Add(n);
if n > 3 then
begin
var k := 2;
while (k * k <= n) and (k < 46341) do
begin
if n mod k = 0 then
begin
var t := n div k;
L.Add(k);
if k < t then L.Add(t)
else break
end;
Inc(k)
end;
L.Sort;
end;
Result := L
end;
begin
// 1
if ReadInteger.IsPrime then Println('YES')
else Println('NO');
// 2
ReadInteger.Factorize.First.Println;
// 3
var a := Divizors(ReadInteger);
Print(a.Count, a.Sum)
end.
Объяснение:
если индексы в нумерации от 0:
#include<iostream>
int main()
{
int i,j,m,n,K;
double S,a;
K=0;
S=0;
std::cin>>m>>n>>K;
for(int i=0; i<m; i++)
{
for(int j=0; j<n; j++)
{
std::cin>>a;
if(i+j==K) S+=a;
}
}
std::cout<<S;
return 0;
}
если индексы в нумерации от 1:
#include<iostream>
int main()
{
int i,j,m,n,K;
double S,a;
K=0;
S=0;
std::cin>>m>>n>>K;
for(int i=1; i<=m; i++)
{
for(int j=1; j<=n; j++)
{
std::cin>>a;
if(i+j==K) S+=a;
}
}
std::cout<<S;
return 0;
}