一个大整数乘法的acm题目问下,可以得话给个代码,谢谢了,想了挺久,没做出来

T4:两两相乘的积为12!的个数
查看 提交 统计 提问
总时间限制: 1000ms 内存限制: 65535kB
描述
找出输入数据中所有两两相乘的积为12!的个数。

输入
输入数据中含有一些整数n(1≤n< 2^32 )。
输出
输出所有两两相乘的积为12!的个数。
样例输入
1 10000 159667200 9696 38373635
1000000 479001600 3 1 479001600
样例输出
3

http://blog.csdn.net/sun5208/article/details/5026082

http://tieba.baidu.com/p/883112767

http://blog.sina.com.cn/s/blog_7d49c18001016cbw.html

 #include <cstdlib>
#include <iostream>
#include <vector>
#include <cstdio>

using namespace std;

const int MAX = 10000;

int main(int argc, char *argv[])
{
    vector<int> vec;

    for(int i=2; i<MAX; i++)
    {    
        int sum = 0;

        for(int j=1; j<=i/2; j++)
        {
            if(i % j ==0)
                sum += j;
        }

        if(sum == i)
            vec.push_back(i);                   
    }

    int n;   
    while(cin >> n)
    {      
        cout << n <<":";
        int count = vec.size();

        for(int i=0; i<count; i++)
        {
            if(vec[i] <= n)
                cout << " " << vec[i];
            else
                break;
        }

        cout << endl;
    }

    return EXIT_SUCCESS;
}

int main()
{
 long a[10000]={0},sum=1,x=1,i,j,k;
 while((scanf("%ld",&a[x]))!=EOF)
 {
  x++;
 }
 for(i=1;i<=12;i++)
 {
  sum=sum*i;
 }
 for(i=1;i<=x;i++)
 {
  for(j=i;j<=x;j++)
  {
   if(a[i]*a[j]==sum)
   {
    k++;
   }
  }
 }
 printf("\n%ld",k);
 system("pause");
 return 0;
}