HiCode潘泉睿 2023-08-08 19:57 采纳率: 60%
浏览 4
已结题

关于P2241的问题,如何解决?


#include <iostream>

using namespace std;

long long s/*正方形个数*/,r/*长方形个数*/;
long long n/*边*/,m/*边*/; 

int main(){
    cin >> n >> m;
    for(int i = 0;i < n;i ++){
        for(int j = 0;j < m;j ++){
            if(i == j){
                s += (n - i) * (m - j);
            }else{
                r += (n - i) * (m - j);
            }
        }
    }
    cout << s << " " << r << endl;
    return 0;
}

#include <iostream>

using namespace std;

int main(){

long long s/*正方形个数*/,r/*长方形个数*/;
long long n/*边*/,m/*边*/; 
    cin >> n >> m;
    for(int i = 0;i < n;i ++){
        for(int j = 0;j < m;j ++){
            if(i == j){
                s += (n - i) * (m - j);
            }else{
                r += (n - i) * (m - j);
            }
        }
    }
    cout << s << " " << r << endl;
    return 0;
}

在程序上会引起什么错误吗?
https://www.luogu.com.cn/problem/P2241
**我其实想问为什么要把

long long s/*正方形个数*/,r/*长方形个数*/;
long long n/*边*/,m/*边*/; 

定义在局外**

  • 写回答

3条回答 默认 最新

  • 浪客 2023-08-08 20:34
    关注

    i,j是int,m,n是long long ,如果输入的mn足够大,会导致i,j始终小于mn,进入死循环。

    本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 8月27日
  • 已采纳回答 8月19日
  • 专家已采纳回答 8月19日
  • 修改了问题 8月8日
  • 展开全部