cc=cc+count1[j]*count2[j];这是什么意思
本帖最后由 牵风 于 2021-11-21 13:14 编辑求满足下面条件的四元组(x1,y1,x2,y2)的个数:
(1)gcd(x1,y1)=gcd(x2,y2)
(2)a<=x1<y1<=b
(3)c<=x2<y2<=d
gcd(x,y)为x和y的最大公约数。如果两个四元组相同,必须每一个位置的元都相同。
输入
输入仅一行,包括四个空格分开的整数a、b、c和d,其含义如上。1<=a<b<=2000且1<=c<d<=2000。
80%的数据b和d的值不超过50。
输出
输出满足上面条件的四元组的个数。
#include<stdio.h>
#include<math.h>
long long int gcd(long long int a,long long int b)
{
long long int r;
r=b%a;
while(r!=0)
{
b=a;a=r;r=b%a;
}
return a;
}
int main()
{
long long int a,b,c,d;
scanf("%lld %lld %lld %lld",&a,&b,&c,&d);
long long int x1,x2,y1,y2;
long long int j,count1={0},count2={0},cc=0;
//count数组用于存放gcd对个数
for(x1=a;x1<b;x1++)
{
for(y1=x1+1;y1<=b;y1++)
{
j=gcd(x1,y1);
count1++;
}
}
for(x2=c;x2<d;x2++)
{
for(y2=x2+1;y2<=d;y2++)
{
j=gcd(x2,y2);
count2++;
}
}
for(j=1;j<2000;j++)
cc=cc+count1*count2;
printf("%lld",cc);
}
本帖最后由 jackz007 于 2021-11-21 13:04 编辑
cc = cc + count1 * count2
没什么,只要把count1 、count2 当成一个普通变量就好了。
count1 是一维数组 count1 下标为 j 的元素,而 count2 则是一维数组 count2 下标为 j 的元素。 jackz007 发表于 2021-11-21 13:02
cc = cc + count1 * count2
没什么,只要把count1 、count2 当成一个普通变量就好 ...
那为什么用*呢 牵风 发表于 2021-11-21 13:15
那为什么用*呢
那是乘号(×)啊大哥! jackz007 发表于 2021-11-21 13:17
那是乘号(×)啊大哥!
我以为是指针{:5_94:}
页:
[1]