题目
As part of an arithmetic competency program, your students will be given randomly generated lists of from 2 to 15 unique positive integers and asked to determine how many items in each list are twice some other item in the same list. You will need a program to help you with the grading. This program should be able to scan the lists and output the correct answer for each one. For example, given the list
1 4 3 2 9 7 18 22
your program should answer 3, as 2 is twice 1, 4 is twice 2, and 18 is twice 9.理解思路
找到给定数组中为另一个元素二倍的元素个数。
先将数组排序,然后从最小的数开始乘以二扫描数组看是否有相等的数。AC代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
int i,j,k=0,l;
int a[16]={0};
for(;cin>>a[0]&&a[0]!=-1;)
{
for(i=1;a[i-1]!=0;i++)
{
cin>>a[i];
}
sort(a,a+(i-1));
for(j=0,k=0;j<i;j++)
{
for(l=j+1;l<i;l++)
{
if(2*a[j]==a[l])
++k;
}
}
cout<<k<<endl;
}
}
- 总结
排序用sort函数