乘积配对,找出输入数据中所有两两相乘的积为 12的个数--C++

找出输入数据中所有两两相乘的积为 12的个数。输入数据可以重复,但是乘积队重复的算一次。例如:1、2;2、1算一对。

#include <fstream>
#include <iostream>
#include <set>
using namespace std;
int main(int argc, char* argv[])
{
    int num=0;
    int f12=12; 
    multiset<unsigned int>s;//多重集合,允许值重复
    int n;
    while(cin>>n&&n!=0)//输入0作为结束标志
    {
        if(f12%n==0)//n 是 f12 的约数吗?
        {
             //多重集合中有 n 的因子吗
            multiset<unsigned int>::iterator it=s.find(f12/n);
            if(it!=s.end())
            {
                num++;
                s.erase(it);//从多重集合中删除该因子
            }
            else
                s.insert(n);//插入到多重集合中
        }
    }
    cout<<num<<endl;//输出因式对数
    return 0;
}

你可能感兴趣的:(C++,乘积配对)