• C++12!配对


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

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

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

    题目分析:对于输入的每个整数,首先判断该整数是否是12!的约数,若是,则从多重集合中查找该数对应的因子,对数加一,然后从多重集合中删除该因子;若不是,则先将该数插入到多重集合中,以供后面输入的数查找对应因子。

    参考代码:

    #include <fstream>
    #include <iostream>
    #include <set>
    
    using namespace std;
    int main(int argc,char * argv[])
    {
        int num=0;
        int f12=479001600;
        multiset<unsigned int> s;
        int n;
        while(cin>>n)
        {
            if(f12%n==0)
            {
                multiset<unsigned int>::iterator it=s.find(f12/n);
                if(it!=s.end())
                {
                    num++;
                    s.erase(it);
                }
                else
                    s.insert(n);
            }
            if(cin.get()=='
    ')
            {
                break;
            }
        }
        cout<<num<<endl;
        system("pause");
        return 0;
    }
    

    运行结果:

  • 相关阅读:
    BZOJ 1500 维修数列
    BZOJ 1501 智慧珠游戏
    BZOJ 1507 Editor
    BZOJ 3223 文艺平衡树
    BZOJ 3224 普通平衡树
    BZOJ 3196 二逼平衡树
    BZOJ 1048 分割矩阵
    BZOJ 1047 理想的正方形
    BZOJ 1046 上升序列
    BZOJ 1045 糖果传递
  • 原文地址:https://www.cnblogs.com/cysolo/p/3381052.html
Copyright © 2020-2023  润新知