求大佬解释下代码
  • 板块灌水区
  • 楼主Armia
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/11/12 00:26
  • 上次更新2024/11/12 15:21:12
查看原帖
求大佬解释下代码
1331516
Armia楼主2024/11/12 00:26

题目是

  小辉得到了一个包含 n 个数的数列,他要从中选出两个不同位置的数形成一个数对,要求较左边的数对 k 取余的结果小于等于较右边的数对 k 取余的结果,问小辉有多少种选法。

输入

一行,两个正整数 n 和 k。 接着 n 个正整数,为数列的值。

输出

一行,一个正整数,表示答案。

样例输入

4 6

3 4 5 6

样例输出

3

代码是

#include<bits/stdc++.h>
using namespace std;
long long n,m,a[1000005],b[1000005],maxx=-1,ans=0;
int main(){
    cin>>n>>m;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
        a[i]=a[i]%m;
        maxx=max(maxx,a[i]);
    }
    for(int i=n;i>=1;i--)
    {
        for(int j=a[i];j<=maxx;j++)
            ans+=b[j];
        b[a[i]]++;
    }
    cout<<ans;
    return 0;
}

我有两个问题:

1、为什么下面的外层循环要倒序

2、代码答案为什么不包含有0的

求大佬解答

2024/11/12 00:26
加载中...