12! 配对

题目内容:找出输入数据中所有两两相乘的积为12!的对数。

输入描述:输入数据中含有一些整数n(1<=n<232)

输出描述:输出所有两两相乘的积为12!的对数。

输入样例

1 10000 159667200 9696 38373635

1000000 479001600 3 1 479001600

输出样例

3

 

#include <iostream>
#include <cstdio>
#include <cstring>
#include <queue>
#include <cmath>
#include <vector>
#include <set>
#include <map>
#include <algorithm>
using namespace std;
typedef long long ll;
int main()
{
    multiset<unsigned ll>s;
    ll ans=0,n;
    ll inf=479001600;
    while(cin>>n)
    {
        if(inf%n==0)
        {
            multiset<unsigned ll>::iterator it=s.find(inf/n);
            if(it!=s.end())
            {
                ans++;
                s.erase(it);
            }
            else s.insert(n);
        }
    }
    cout<<ans<<endl;
    return 0;
}

 

 

原文地址:https://www.cnblogs.com/shinianhuanniyijuhaojiubujian/p/7126598.html