您的位置:首页 > 其它

给定长度为nn的序列a,求有多少对i, j (i < j)i,j(i<j),使得|a_i-a_j| \ mod \ b = c∣a ​i ​​ −a ​j ​​ ∣ mod b=c

2015-11-21 23:26 651 查看
若干组数据

(大概5每组数据第一行三个整数n(1 \leq n \leq 100), b, c (0 \leq c < b \leq 10^{9})n(1≤n≤100),b,c(0≤c<b≤10​9​​)。
接下来一行nn个整数a_i ( 0 \leq a_i \leq 10^{9})a​i​​(0≤a​i​​≤10​9​​)。

#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int n,i,j,y,x,k,a[100];
long b,c;
while(cin>>n>>b>>c)
{
k=0;
for(i=1;i<=n;i++)
{
cin>>a[i];
}
for(j=n;j>0;j--)
{
for(i=1;i<j;i++)
{
x=a[i]-a[j];
y=abs(x);
if(y%b==c)
k++;
}
}
cout<<k<<endl;
}
return 0;
}

注意排列数组

另一种方法:

#include <iostream>
using namespace std;
int main()
{
int n , b , c,a[100],i,j,s;
while(cin>>n>>b>>c)
{
for(i=1;i<=n;i++)
cin>>a[i];
int s =0;
for(i=1;i<=n;i++)
for( j=i+1;j<=n;j++)
if(abs(a[i]-a[j])%b==c)
s++;
cout<<s<<endl;
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: