问题描述
作为算术能力计划的一部分,您的学生将获得随机生成的2至15个独特正整数列表,并要求确定每个列表中有多少项目是同一列表中的其他项目的两倍。您需要一个程序来帮助您进行评分。这个程序应该能够扫描列表并为每个列表输出正确的答案。例如,给出列表
1 4 3 2 9 7 18 22
你的程序应该回答3,因为2是两次1,4是两次2,18是两次9。
1 4 3 2 9 7 18 22
你的程序应该回答3,因为2是两次1,4是两次2,18是两次9。
输入
输入文件将包含一个或多个数字列表。每行将有一个数字列表。每个列表将包含2到15个独特的正整数。没有整数将大于99.每行将以整数0结束,这不被视为列表的一部分。具有单个数字-1的行将标记文件的结尾。下面的示例输入显示了3个单独的列表。一些列表可能不包含任何双打。
产量
输出将由每个输入列表一行组成,其中包含其他项目的两倍的项目数。
示例输入
1 4 3 2 9 7 18 22 02 4 8 10 07 5 11 13 1 3 0-1
示例输出
320
这道题的思路是先排序,再循环,一遍就过啦〜
代码:
#include <stdio.h>
#include <算法>
使用namespace std;
int main(){
int a [30];
while(scanf(“%d”,&a [0])!= EOF && a [0]!= - 1){
int len = 1;
for(int i = 1; i <= 20; i ++)
{
的scanf( “%d”,&A [1]);
LEN ++;
if(a [i] == 0){
打破;
}
}
int num = 0;
排序(A,A + LEN);
for(int j = 0; j <len; j ++)
{
for(int k = j + 1; k <len; k ++)
{
如果(a [j] * 2 == a [k])
{
num ++;
}
}
}
的printf( “%d \ n” 个,NUM);
}
返回0;
}