1. 程式人生 > >HackerRank初級篇之Between Two Sets

HackerRank初級篇之Between Two Sets

題目說明:


題目解讀:

1、給定2個整數集合A、B

2、求集合C滿足條件的元素個數:(A中的元素是C中元素的因子,C中元素是B中元素的因子)

示例程式碼:

// BetweenTwoSets.cpp: 定義控制檯應用程式的入口點。
//
//已知AC兩集合,求B(A是B的因子,B是A的因子)
//

#include "stdafx.h"
#include <windows.h>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;

//by zhaocl
int main()
{
    int m, n;
    int c = 0;
    bool bTrue = true;
    cin >> n;
    vector<int> arrOne( n );

    for( int i = 0; i < n; i++ )
    {
        cin >> arrOne[i];
    }

    sort( arrOne.begin(), arrOne.end() );
    cin >> m;
    vector<int> arrTwo( m );

    for( int i = 0; i < m; i++ )
    {
        cin >> arrTwo[i];
    }

    sort( arrTwo.begin(), arrTwo.end() );

    for( int i = arrOne[n - 1]; i <= arrTwo[0]; i++ )
    {
        bTrue = true;

        for( int j = 0; j < n; j++ )
        {
            if( i % arrOne[j] != 0 )
            {
                bTrue = false;
                goto EndHere;
            }
        }

        for( int k = 0; k < m; k++ )
        {
            if( arrTwo[k] % i != 0 )
            {
                bTrue = false;
                goto EndHere;
            }
        }

EndHere:

        if( bTrue )
        {
            c++;
        }
    }

    system( "pause" );
    return 0;
}

基礎知識點:

1、因子、最小公約數、最小公倍數,理解了就很容易

2、goto跳出多層迴圈