排位赛(三)| F题

【题目描述】

  给定一个 n * m 的矩阵,求其中有多少个本质不同的正方形;(本质不同:不完全重合)

【输入格式】

  第一行一个数据 t(1 <= t <= 100),表示数据组数;

  接下来 t 行,每行两个数据表示 n、m(1 <= n, m <= 1e5);

【输出格式】

  每行一个数据表示本质不同的正方形的个数;

【解题思路】

  (1)由样例以及其他示例找规律,代码照抄公式即可;

  (2)样例分析:

 

1 * 1 :1 个

   
   

2 * 2 :6 个

【不要忘记边长为1.414的那个】

  (3)规律分析://规律不是这么分析的!!!!!

    边长为1:n * m;

    边长为2:(n - 1)* (m - 1);

    边长为3:(n - 2)* (m - 2);

    ......

    边长为 min(m, n) - 1: ......

    边长为 min(m, n):  max(m, n) -  min(m, n);

    边长为 21/2 : (m - 2) * (n - 2)

    边长为2 * 21/2: (m - 4) * (n - 4)

    .....

    边长为min(m, n) / 2 * 21/2: (m - min(m, n) /  2 * 2 ) * ( n - min(m, n) / 2 * 2)

【正确代码】

复制代码
 1 #include <iostream>
 2 
 3 using namespace std;
 4 
 5 typedef long long ll;
 6 
 7 int main()
 8 {
 9     int t;
10     scanf("%d", &t);
11     
12     while(t --)
13     {
14         int n, m;
15         ll sum = 0;
16         scanf("%d%d", &n, &m);
17         
18         for(int i = 1; i <= min(n, m); i ++) sum += (ll)i * (n - i + 1) * (m - i + 1);
19         printf("%lld\n", sum);
20     }
21     
22     return 0;
23 }
复制代码

 

 

    

posted @   小菜珠的成长之路  阅读(64)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示