12!配对

12!配对

时间: 1ms        内存:64M

描述:

找出输入数据中所有两两相乘的积为12!的个数。

输入:

输入数据中含有一些整数n(1≤n<2^32)。

输出:

输出所有两两相乘的积为12!的个数。

示例输入:

1 10000 159667200 9696 38373635 1000000 479001600 3

示例输出:

2

提示:

参考答案(内存最优[748]):

#include<stdio.h>
int  const jie = 479001600;
int main(){
	int   i = 0 , sum=0 , a[10000] ,j ,k;
	while(scanf("%d",&a[i])!=EOF){
		if(jie%a[i]==0)
			i++;
	}
	for( j = 0 ; j < i ; j++)
		for( k = j+1 ; k < i ; k++){
			if(a[j]*a[k]==jie)	sum++;
		}
	printf("%d\n",sum);
	return 0 ;
}

参考答案(时间最优[0]):

#include<stdio.h>
long a[1000000]= {0};
int main()
{
    long m,r=1,j=0;
    int i,n=0;
    for(i=1; i<=12; i++)
        r*=i;
    while(scanf("%ld",&m)!=EOF)
    {
        if(r%m==0)
        {
            a[j]=r/m;
            for(i=0; i<j; i++)
            {
                if(a[i]==m)
                    n++;
                break;
            }
            j++;
        }
    }
    if(n!=0)
        printf("%d\n",n+1);
    else
        printf("%d\n",n);
    return 0;
}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注