VJ_两倍_used

给定2到15个不同的正整数,你的任务是计算这些数里面有多少个数对满足:数对中一个数是另一个数的两倍。

比如给定1 4 3 2 9 7 18 22,得到的答案是3,因为2是1的两倍,4是2个两倍,18是9的两倍。

Input

一行,给出2到15个两两不同且小于100的正整数。最后用0表示输入结束。

Output

一个整数,即有多少个数对满足其中一个数是另一个数的两倍。

Sample

Inputcopy Outputcopy
1 4 3 2 9 7 18 22 0
3

//
#include<bits/stdc++.h>
using namespace std;

int main()
{
    vector<int> v;
    int n,i,j,ans;

    while( cin>>n && n )
    {
        v.push_back( n );
    }
    sort( v.begin(),v.end() );

    vector<bool> used( v.size(),0 );

    ans=0;
    for( i=0;i<v.size();i++ )
        for( j=i+1;j<v.size();j++ )
        {
            if( used[j] ) continue;
            if( v[j]==v[i]*2 )
            {
                used[j]=1; ans++; break;
            }
        }
    cout<<ans<<endl;
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_63173957/article/details/125129539
今日推荐