0 / 0 / 0 Регистрация: 12.10.2014 Сообщений: 26 |
|
1 |
|
Найти количество квадратов, размещенных на прямоугольнике26.10.2014, 15:27. Показов 17693. Ответов 15
Помогите решить!!
0 |
870 / 720 / 304 Регистрация: 15.04.2013 Сообщений: 2,047 Записей в блоге: 5 |
|
26.10.2014, 15:31 |
2 |
Squaker,
0 |
0 / 0 / 0 Регистрация: 12.10.2014 Сообщений: 26 |
|
26.10.2014, 15:41 [ТС] |
3 |
Это понятно…
0 |
140 / 133 / 88 Регистрация: 18.05.2013 Сообщений: 399 |
|
26.10.2014, 16:09 |
4 |
Довольно просто: в цикле, пока A>=C и B>=C, вычитайте A=A-C, B=B-C и увеличивайте значение счетчика на единицу. После окончания цикла, значение счетчика и будет числом квадратов. Добавлено через 20 минут
0 |
0 / 0 / 0 Регистрация: 12.10.2014 Сообщений: 26 |
|
26.10.2014, 16:25 [ТС] |
5 |
Можешь помочь с кодом?
0 |
XRoy 870 / 720 / 304 Регистрация: 15.04.2013 Сообщений: 2,047 Записей в блоге: 5 |
||||
26.10.2014, 16:48 |
6 |
|||
Squaker,
2 |
atoi 140 / 133 / 88 Регистрация: 18.05.2013 Сообщений: 399 |
||||
26.10.2014, 16:48 |
7 |
|||
2 |
0 / 0 / 0 Регистрация: 12.10.2014 Сообщений: 26 |
|
26.10.2014, 17:35 [ТС] |
8 |
всегда N=0, что-то не так
0 |
140 / 133 / 88 Регистрация: 18.05.2013 Сообщений: 399 |
|
26.10.2014, 17:38 |
9 |
Squaker, а какие значения A, B и С вы вводите?
0 |
0 / 0 / 0 Регистрация: 12.10.2014 Сообщений: 26 |
|
26.10.2014, 17:46 [ТС] |
10 |
любые значения вводишь и выводит 0… например 3,4,1 выводит 0
0 |
140 / 133 / 88 Регистрация: 18.05.2013 Сообщений: 399 |
|
26.10.2014, 17:53 |
11 |
У меня правильно все считает…Вариант XRoy тоже не работает (хотя он аналогичен)? Миниатюры
0 |
0 / 0 / 0 Регистрация: 12.10.2014 Сообщений: 26 |
|
26.10.2014, 17:56 [ТС] |
12 |
а ещё глупый вопрос у меня, в цикле for , переменная i за что она отвечает?
0 |
140 / 133 / 88 Регистрация: 18.05.2013 Сообщений: 399 |
|
26.10.2014, 18:22 |
13 |
Нужно немного абстрагироваться и представить прямоугольник как массив, в котором имеются строки и столбцы.
1 |
0 / 0 / 0 Регистрация: 12.10.2014 Сообщений: 26 |
|
26.10.2014, 18:44 [ТС] |
14 |
большое спасибо!
0 |
0 / 0 / 0 Регистрация: 01.05.2020 Сообщений: 3 |
|
13.08.2020, 11:14 |
15 |
Напишите могу скинуть.
0 |
11473 / 7814 / 1192 Регистрация: 21.01.2016 Сообщений: 29,310 |
|
13.08.2020, 11:22 |
16 |
pasphow, за прошедшие шесть лет я думаю, что ТС сам уже всё сделал.
0 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
13.08.2020, 11:22 |
Помогаю со студенческими работами здесь Найти количество квадратов размещённых на прямоугольнике, а также площадь не занятой поверхности Найти количество квадратов, размещенных на прямоугольнике, а также площадь незанятой части прямоугольника Найти количество квадратов, размещенных на прямоугольнике, а также площадь незанятой части прямоугольника На прямоугольнике размещено максимально возможное количество квадратов. Найти количество квадратов и площадь незанятой части прямоугольника Искать еще темы с ответами Или воспользуйтесь поиском по форуму: 16 |
Given a m x n rectangle, how many squares are there in it?
Examples :
Input: m = 2, n = 2 Output: 5 There are 4 squares of size 1x1 + 1 square of size 2x2. Input: m = 4, n = 3 Output: 20 There are 12 squares of size 1x1 + 6 squares of size 2x2 + 2 squares of size 3x3.
Let us first solve this problem for m = n, i.e., for a square:
For m = n = 1, output: 1
For m = n = 2, output: 4 + 1 [ 4 of size 1×1 + 1 of size 2×2 ]
For m = n = 3, output: 9 + 4 + 1 [ 9 of size 1×1 + 4 of size 2×2 + 1 of size 3×3 ]
For m = n = 4, output 16 + 9 + 4 + 1 [ 16 of size 1×1 + 9 of size 2×2 + 4 of size 3×3 + 1 of size 4×4 ]
In general, it seems to be n^2 + (n-1)^2 + … 1 = n(n+1)(2n+1)/6
Let us solve this problem when m may not be equal to n:
Let us assume that m <= n
From above explanation, we know that number of squares in a m x m matrix is m(m+1)(2m+1)/6
What happens when we add a column, i.e., what is the number of squares in m x (m+1) matrix?
When we add a column, number of squares increased is m + (m-1) + … + 3 + 2 + 1
[ m squares of size 1×1 + (m-1) squares of size 2×2 + … + 1 square of size m x m ]
Which is equal to m(m+1)/2
So when we add (n-m) columns, total number of squares increased is (n-m)*m(m+1)/2.
So total number of squares is m(m+1)(2m+1)/6 + (n-m)*m(m+1)/2.
Using same logic we can prove when n <= m.
So, in general,
Total number of squares = m x (m+1) x (2m+1)/6 + (n-m) x m x (m+1)/2 when n is larger dimension
Using above logic for rectangle, we can also prove that number of squares in a square is n(n+1)(2n+1)/6
Below is the implementation of above formula.
C++
#include<iostream>
using
namespace
std;
int
countSquares(
int
m,
int
n)
{
if
(n < m)
swap(m, n);
return
m * (m + 1) * (2 * m + 1) /
6 + (n - m) * m *(m + 1) / 2;
}
int
main()
{
int
m = 4, n = 3;
cout <<
"Count of squares is "
<< countSquares(m, n);
}
C
#include <stdio.h>
int
countSquares(
int
m,
int
n)
{
int
temp;
if
(n < m)
{
temp=n;
n=m;
m=temp;
}
return
m * (m + 1) * (2 * m + 1) /
6 + (n - m) * m *(m + 1)/ 2;
}
int
main()
{
int
m = 4, n = 3;
printf
(
"Count of squares is %d"
,countSquares(m, n));
}
Java
class
GFG
{
static
int
countSquares(
int
m,
int
n)
{
if
(n < m)
{
int
temp = m;
m = n;
n = temp;
}
return
m * (m +
1
) * (
2
* m +
1
) /
6
+ (n - m) * m * (m +
1
) /
2
;
}
public
static
void
main(String[] args)
{
int
m =
4
, n =
3
;
System.out.println(
"Count of squares is "
+
countSquares(m, n));
}
}
Python3
def
countSquares(m, n):
if
(n < m):
temp
=
m
m
=
n
n
=
temp
return
((m
*
(m
+
1
)
*
(
2
*
m
+
1
)
/
6
+
(n
-
m)
*
m
*
(m
+
1
)
/
2
))
if
__name__
=
=
'__main__'
:
m
=
4
n
=
3
print
(
"Count of squares is "
,countSquares(m, n))
C#
using
System;
class
GFG {
static
int
countSquares(
int
m,
int
n)
{
if
(n < m)
{
int
temp = m;
m = n;
n = temp;
}
return
m * (m + 1) * (2 * m + 1) / 6 +
(n - m) * m * (m + 1) / 2;
}
public
static
void
Main()
{
int
m = 4, n = 3;
Console.WriteLine(
"Count of squares is "
+ countSquares(m, n));
}
}
PHP
<?php
function
countSquares(
$m
,
$n
)
{
if
(
$n
<
$m
)
list(
$m
,
$n
) =
array
(
$n
,
$m
);
return
$m
* (
$m
+ 1) * (2 *
$m
+ 1) /
6 + (
$n
-
$m
) *
$m
* (
$m
+ 1) / 2;
}
$m
= 4;
$n
= 3;
echo
(
"Count of squares is "
. countSquares(
$m
,
$n
));
?>
Javascript
<script>
function
countSquares( m, n)
{
if
(n < m)
[m, n] = [n, m];
return
m * (m + 1) * (2 * m + 1) /
6 + (n - m) * m *(m + 1) / 2;
}
let m = 4;
let n = 3;
document.write(
"Count of squares is "
+countSquares(n, m));
</script>
Output :
Count of Squares is 20
Time complexity: O(1)
Auxiliary Space: O(1)
Alternate Solution :
- Let us take m = 2, n = 3;
- The number of squares of side 1 will be 6 as there will be two cases one as squares of 1-unit sides along with the horizontal(2) and the second case as squares of 1-unit sides along the vertical(3). that give us 2*3 = 6 squares.
- When the side is 2 units, one case will be as squares of the side of 2 units along only one place horizontally and the second case as two places vertically. So, the number of squares=2
- So we can deduce that, Number of squares of size 1*1 will be m*n. The number of squares of size 2*2 will be (n-1)(m-1). So like this, the number of squares of size n will be 1*(m-n+1).
The final formula for the total number of squares will be n*(n+1)(3m-n+1)/6 .
C++
#include <iostream>
using
namespace
std;
int
countSquares(
int
m,
int
n)
{
if
(n < m) {
int
temp = m;
m = n;
n = temp;
}
return
n * (n + 1) * (3 * m - n + 1) / 6;
}
int
main()
{
int
m = 4, n = 3;
cout <<
"Count of squares is "
<< countSquares(m, n);
}
C
#include <stdio.h>
int
countSquares(
int
m,
int
n)
{
if
(n < m)
{
int
temp = m;
m = n;
n = temp;
}
return
n * (n + 1) * (3 * m - n + 1) / 6;
}
int
main()
{
int
m = 4, n = 3;
printf
(
"Count of squares is %d"
,countSquares(m, n));
}
Java
import
java.util.*;
class
GFG
{
static
int
countSquares(
int
m,
int
n)
{
if
(n < m)
{
int
temp = m;
m = n;
n = temp;
}
return
n * (n +
1
) * (
3
* m - n +
1
) /
6
;
}
public
static
void
main(String[] args)
{
int
m =
4
;
int
n =
3
;
System.out.print(
"Count of squares is "
+
countSquares(m, n));
}
}
Python3
def
countSquares(m, n):
if
(n < m):
temp
=
m
m
=
n
n
=
temp
return
n
*
(n
+
1
)
*
(
3
*
m
-
n
+
1
)
/
/
6
if
__name__
=
=
'__main__'
:
m
=
4
n
=
3
print
(
"Count of squares is"
,
countSquares(m, n))
C#
using
System;
class
GFG
{
static
int
countSquares(
int
m,
int
n)
{
if
(n < m)
{
int
temp = m;
m = n;
n = temp;
}
return
n * (n + 1) * (3 * m - n + 1) / 6;
}
public
static
void
Main(String[] args)
{
int
m = 4;
int
n = 3;
Console.Write(
"Count of squares is "
+
countSquares(m, n));
}
}
Javascript
<script>
function
countSquares(m , n)
{
if
(n < m)
{
var
temp = m;
m = n;
n = temp;
}
return
n * (n + 1) * (3 * m - n + 1) / 6;
}
var
m = 4;
var
n = 3;
document.write(
"Count of squares is "
+
countSquares(m, n));
</script>
Output :
Count of Squares is 20
Time complexity: O(1)
Auxiliary Space: O(1)
Thanks to Pranav for providing this alternate solution.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
Approach#3: Using loop
This approach counts the number of squares in a given rectangle of size m x n by iterating over all possible square sizes from 1 to the minimum of m and n, and adding up the number of squares of each size that can fit in the rectangle.
Algorithm
1. Initialize a counter variable to 0.
2. Iterate over all possible square sizes, i.e. from 1 to min(m, n).
3. For each square size, calculate the number of squares that can be formed.
4. Add this count to the counter variable.
5. Return the final count.
C++
#include <iostream>
using
namespace
std;
int
count_squares(
int
m,
int
n) {
int
count = 0;
for
(
int
i = 1; i <= min(m, n); i++) {
count += (m - i + 1) * (n - i + 1);
}
return
count;
}
int
main() {
int
m = 4;
int
n = 3;
cout << count_squares(m, n) << endl;
return
0;
}
Python3
def
count_squares(m, n):
count
=
0
for
i
in
range
(
1
,
min
(m, n)
+
1
):
count
+
=
(m
-
i
+
1
)
*
(n
-
i
+
1
)
return
count
m
=
4
n
=
3
print
(count_squares(m, n))
Java
public
class
Main {
public
static
void
main(String[] args) {
int
m =
4
;
int
n =
3
;
System.out.println(countSquares(m, n));
}
public
static
int
countSquares(
int
m,
int
n) {
int
count =
0
;
for
(
int
i =
1
; i <= Math.min(m, n); i++) {
count += (m - i +
1
) * (n - i +
1
);
}
return
count;
}
}
Javascript
function
count_squares(m, n) {
let count = 0;
for
(let i = 1; i <= Math.min(m, n); i++) {
count += (m - i + 1) * (n - i + 1);
}
return
count;
}
let m = 4;
let n = 3;
console.log(count_squares(m, n));
Time Complexity: O(m * n * min(m, n))
Space Complexity: O(1)
Last Updated :
28 Apr, 2023
Like Article
Save Article
Формулировка задачи:
Даны целые положительные числа A, B, C. На прямоугольнике раз- мера A х B размещено максимально возможное количество квадратов со стороной C (без наложений). Найти количество квадратов, размещенных на прямоугольнике, а также площадь незанятой части прямоугольника
Код к задаче: «Найти количество квадратов, размещенных на прямоугольнике, а также площадь незанятой части прямоугольника»
textual
Листинг программы
var a,b,c,Sk,Sp:integer; Resulr:real; begin Writeln('Enter please A,B,C='); readln(a,b,c); Sk:=c*c; Sp:=a*b; Resulr:=Sp div Sk; writeln('Количество квадратов размещенных в прямоугольнике=',Resulr); end.
Дан прямоугольник из N×M квадратов. Назовём квадраты на границе прямоугольника крайними. Расстоянием от какого‑либо квадрата до края назовём количество перемещений, которое нужно сделать из данного квадрата в соседний по стороне квадрат, чтобы добраться от данного квадрата до крайнего квадрата. Квадраты с максимальным расстоянием до края, будем называть центральными. При этом квадрат может быть одновременно и крайним, и центральным.
На рисунке изображён прямоугольник для N=7 и M=8, в каждом квадрате которого записано расстояние от этого квадрата до края. У этого прямоугольника два центральных квадрата.
По данным N и M определите количество центральных квадратов в прямоугольнике.
Формат входных данных
Программа получает на вход два целых положительных числа, записанных в разных строках, не превосходящих 109 — размеры прямоугольника.
Формат выходных данных
Программа должна вывести одно число — количество центральных клеток в данном прямоугольнике.
(Visited 282 times, 1 visits today)
Dwasedma ответил на вопрос 25.10.2022
Имеется миллиметровка со сторонами n на m, нужно посчитать количество всех квадратов границы которых проходят по границам клеток. (Точнее, вывести формулу).
Формулу подсчёта квадратов на квадратной шахматной доске знаю:
$$sumlimits_{k=1}^nk^2=frac{n∙(n+1)∙(2∙n+1)}6$$
Из [math.hashcode.ru/questions/40893/
Для начала я писал такие примеры,
для прямоугольника:
2х1 $$1 times 1+1=2 $$ $$квадрата $$
3х2 $$(1 times 1+1)+(2 times 2+2)=8 $$$$квадратов $$
4х3 $$(1 times 1+1)+(2 times 2+2)+(3 times 3+3)=20$$$$квадратов $$
3х1 $$1 times 1+1+1=3 $$$$квадрата $$
4х2 $$(1 times 1+1+1)+(2 times 2+2+2)=11$$$$квадратов $$
5×3 $$(1 times 1+1+1)+(2 times 2+2+2)+(3 times 3+3+3)=26$$$$квадратов $$