首页 > 其他分享 >矩形的对角线经过的小方格数量

矩形的对角线经过的小方格数量

时间:2023-08-19 16:22:12浏览次数:50  
标签:le int E7% 方格 对角线 整数 矩形

题目:

  对于一个长度为m,宽为n的矩形,均分成m*n的小方格,求 从左上角到右下角的对角线 穿过多少个小方格?

题解1:

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
    int n = 1, t, a1 = 0, b1 = 0, a2, b2; // n 计数器,a1、b1 上一次统计过的长、宽方向上的整数
    float a, b, x, le, ca, cb; // a、b 长方形的长和宽,x 微小增量,le 对角线长度,ca、cb 长、宽方向上的变化比例

    cout << "输入长方形的长和宽:" << endl;
    cin >> a >> b;

    le = sqrt(a * a + b * b); // 计算对角线长度
    ca = a / le; // 计算长方向上的变化比例
    cb = b / le; // 计算宽方向上的变化比例

    for (x = 0; x < le; x += 0.01) // 以微小增量遍历对角线长度
    {
        t = 0;
        a2 = x * ca; // 根据比例计算当前位置长方向上的整数
        b2 = x * cb; // 根据比例计算当前位置宽方向上的整数

        if (a2 >= a1 + 1) { // 如果当前位置长方向上的整数大于上次统计的整数
            t = 1; // 标记有新的正方形被穿过
            a1 = a2; // 更新上次统计的整数
        }
        if (b2 >= b1 + 1) { // 如果当前位置宽方向上的整数大于上次统计的整数
            t = 1; // 标记有新的正方形被穿过
            b1 = b2; // 更新上次统计的整数
        }
        if (t == 1) // 如果有新的正方形被穿过
            n++; // 计数器递增
    }

    cout << "对角线串过正方形个数为:" << n << endl;

    return 0;
}

题解2:

  对于一个长度为 m,宽度为 n 的矩形,均分成 m ∗ n 个小方格,则对角线经过的小方格数量为 m + n − ( m , n ) ,其中( m , n )为 m 和 n 的最大公约数。

#include <iostream>
#include <algorithm>
using namespace std;

int main()
{
    int m, n;
    cin >> m >> n;
    for (int a = min(m, n); a > 0; a--) {
        if (m % a == 0 && n % a == 0) {
            cout << "result = " << m + n - a << endl;
            return 0;
        }
    }
    return 0;
}

参考文章:

1. https://blog.csdn.net/xiaofei2010/article/details/7563038?ops_request_misc=&request_id=&biz_id=102&utm_term=%E7%9F%A9%E5%BD%A2%E7%9A%84%E5%AF%B9%E8%A7%92%E7%BA%BF%E7%BB%8F%E8%BF%87%E7%9A%84%E5%B0%8F%E6%96%B9%E6%A0%BC%E6%95%B0%E9%87%8F&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-2-7563038.nonecase&spm=1018.2226.3001.4187

2. https://blog.csdn.net/qq_30205523/article/details/100528069

(〃>_<;〃)(〃>_<;〃)(〃>_<;〃)

标签:le,int,E7%,方格,对角线,整数,矩形
From: https://www.cnblogs.com/wjjgame/p/17642622.html

相关文章

  • sol.[APIO2011] 方格染色
    题目描述给定\(k\)个坐标的颜色\((0\)或\(1)\),用\(0\)和\(1\)两种颜色对剩下的方格染色,使得对于任意\(2\times2\)的方格中,只有\(1\)个\(1\)或\(3\)个\(1\)。求满足条件的染色方案数,答案对\(10^9\)取模。数据范围:\(2\leqslantn,m\leqslant10^5\),\(0\l......
  • c# - 如何在圆角 WPF 窗体中创建圆角矩形?
    我正在WPF中创建一个应用程序,我想要圆角。收到。现在窗体是无边框的,我正在尝试创建一个圆角矩形并将其放在顶部,使其看起来像Windows应用程序的顶部栏。我做不到。这是我的代码:<BorderCornerRadius="50,0,50,0"BorderBrush="Black"BorderThickness="2"Background="......
  • java opencv在图片上绘制 矩形
    javaopencv在图片上绘制矩形 packagecom.vfsd.core;importorg.opencv.core.Core;importorg.opencv.core.CvType;importorg.opencv.core.Mat;importorg.opencv.core.Point;importorg.opencv.core.Rect;importorg.opencv.core.Scalar;importorg.opencv.highgu......
  • 1572. 矩阵对角线元素的和
    1572.矩阵对角线元素的和2023年8月12日19:07:511572.矩阵对角线元素的和简单给你一个正方形矩阵mat,请你返回矩阵对角线元素的和。请你返回在矩阵主对角线上的元素和副对角线上且不在主对角线上元素的和。示例1:输入:mat=[[1,2,3],[4,5,6],[......
  • 1572. 矩阵对角线元素的和
    题目链接给定一个正方形矩阵,返回对角线元素的和(两条对角线,中心的元素不要叠加两次)。第一种方法:遍历矩阵矩阵中某个位置(i,j)如果处于对角线上。则一定满足下列条件之一:i=j;i+j=n-1;根据上边的结论,可以遍历整个矩阵。如果满足条件之一,则表示该元素在对角线上,加入到......
  • Vue中实现矩形和虚线的分离
    要在Vue中实现矩形和虚线的分离,你可以使用Vue的模板语法和样式绑定来实现。下面是一个示例代码,展示了如何使用Vue实现一个具有矩形和虚线的分离效果:<!DOCTYPEhtml><html><head><title>矩形和虚线分离</title><style>.rectangle{width:200px;......
  • C# picturebox画矩形、圆
    usingSystem;usingSystem.Collections.Generic;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Windows.Forms;namespace自定义画矩形{///<summary>///类型:1、画矩形2、画圆///绘制按钮:drawState=t......
  • opencv检测黑色轮廓(矩形)
    opencv检测黑色轮廓:importcv2importnumpyasnpclassShapeDetector:def__init__(self,image_path):self.image_path=image_pathself.img=cv2.imread(self.image_path)#读取图像self.imgContour=self.img.copy()#创建一个用......
  • #yyds干货盘点# LeetCode程序员面试金典:矩形区域不超过 K 的最大数值和
    1.简述:给你一个mxn的矩阵matrix和一个整数k,找出并返回矩阵内部矩形区域的不超过k的最大数值和。题目数据保证总会存在一个数值和不超过k的矩形区域。 示例1:输入:matrix=[[1,0,1],[0,-2,3]],k=2输出:2解释:蓝色边框圈出来的矩形区域 [[0,1],[-2,3]] 的数值和是......
  • OpenGL之绘制矩形使用索引和glUniform4f
    glUniform更改一个uniform变量或数组的值。要更改的uniform变量的位置由location指定,location的值应该由glGetUniformLocation函数返回。通过调用glUseProgram,glUniform操作的程序对象将成为当前状态的一部分。glUniform{1|2|3|4}{f|i}使用传进来的实参,修改通过location指定的uni......