当前位置: 首页 > article >正文

[NOIP1997 普及组] 棋盘问题

题目背景

NOIP1997 普及组第一题

题目描述

设有一个 N×M 方格的棋盘 (1≤N≤100,1≤M≤100)

求出该棋盘中包含有多少个正方形、多少个长方形(不包括正方形)。

例如:当 N=2,M=3 时:

image.png

正方形的个数有 8 个:即边长为 1 的正方形有 6 个;边长为 2 的正方形有 2 个。

长方形的个数有 10 个:

  • 2×1 的长方形有 4 个:

    image.png

  • 1×2 的长方形有 3 个:

    image.png

  • 3×1 的长方形有 2 个:

    image.png

  • 3×2 的长方形有 1 个:

    image.png

输入描述

输入格式

一行两个整数 N,M。

输出描述

输出格式

一行两个整数,表示正方形的个数与长方形的个数。

用例输入 1

2 3

用例输出 1

8 10

看到这里,相信大家已经有思路了,可能会觉得,直接算不接好了吗?但是你想想,长方形怎么求?
所以,我的思路就是,算出来正方形的和总共的,长方形就等于总共的减正方形

接下来我们挨个分析:
输入部分
#include<bits/stdc++.h>
using namespace std;
int main()
{
    int N,M;
    cin>>N>>M;
}

正方形:

    int zheng=0;
    for (int k=1;k<=min(N,M);k++) zheng+=(N-k+1)*(M-k+1);

总共的:

    int total=0;
    for (int i=1;i<=N;i++)
    {
        for (int j=1;j<=M;j++)
        {
            total+=(N-i+1)*(M-j+1);
        }
    }

长方形(总共的-正方形):

int chang=total-zheng;


输出:

cout<<zheng<<" "<<chang<<endl;


完整AC代码:
 

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int N,M;
    cin>>N>>M;
    int zheng=0;
    for (int k=1;k<=min(N,M);k++) zheng+=(N-k+1)*(M-k+1);
    int total=0;
    for (int i=1;i<=N;i++)
    {
        for (int j=1;j<=M;j++)
        {
            total+=(N-i+1)*(M-j+1);
        }
    }
    int chang=total-zheng;
    cout<<zheng<<" "<<chang<<endl;
}


http://www.kler.cn/a/529000.html

相关文章:

  • 一、TensorFlow的建模流程
  • 受限玻尔兹曼机:原理、实现、与神经网络对比及应用
  • 从理论到实践:Linux 进程替换与 exec 系列函数
  • 29.Word:公司本财年的年度报告【13】
  • 嵌入式C语言:大小端详解
  • 2.1.3 相机图像信号处理的基本流程
  • Python3 【闭包】避坑指南:常见错误解析
  • 17.3.3 ImageAttributes类
  • 蓝桥杯嵌入式赛道备考1 —— 基础GPIO实战
  • Python NumPy(11):NumPy 排序、条件筛选函数
  • No.8十六届蓝桥杯备战|C++输入输出|printf|scanf(C++)
  • 一、html笔记
  • LS和MMSE信道估计
  • 程序代码篇---Numpyassert迭代器
  • inquirer 一款命令行交互依赖
  • MINIRAG: TOWARDS EXTREMELY SIMPLE RETRIEVAL-AUGMENTED GENERATION论文翻译
  • leetcode 2080. 区间内查询数字的频率
  • 将markdown文件和LaTex公式转为word
  • 如何编写地信测绘信息相关的综述论文-总结版本
  • 6.攻防世界php_rce