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;
}