Doubles

Doubles

时间: 1ms        内存:64M

描述:

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.

输入:

The input file will consist of one or more lists of numbers. There will be one list of numbers per line. Each list will contain from 2 to 15 unique positive integers. No integer will be larger than 99. Each line will be terminated with the integer 0, which is not considered part of the list. A line with the single number -1 will mark the end of the file. The example input below shows 3 separate lists. Some lists may not contain any doubles.

输出:

The output will consist of one line per input list, containing a count of the items that are double some other item.

示例输入:

1 4 3 2 9 7 18 22 0
2 4 8 10 0
7 5 11 13 1 3 0
-1 

示例输出:

3
2
0

提示:

参考答案(内存最优[748]):

#include"stdio.h"
int main()
{
    int a[100],n,m,b,v;
    int i,j,k;
    while(1)
    {
        scanf("%d",&a[0]);
        if(a[0]==-1)
            return 0;
        for(i=0; a[i]; i++)
            scanf("%d",&a[i+1]);
        v=0;
        for(b=j=0; j<i ; j++)
            for(k=j+1; k<i; k++)
                if((a[k]/a[j]==2||a[j]/a[k]==2)&&(a[k]%a[j]==0||a[j]%a[k]==0))
                    v++;
        printf("%d\n",v);
    }
    return 0;
}

参考答案(时间最优[0]):

#include <iostream>
using namespace std;
int main()
{
    int a[20];
    while(cin>>a[0])
    {
        if(a[0]==-1)break;
        int i=1,j,ans=0;
        while(1)
        {
            cin>>a[i];
            if(a[i]==0)break;
            for(j=0;j<i;j++)
            {
                if((a[i]/a[j]==2&&a[i]%a[j]==0)||(a[j]/a[i]==2&&a[j]%a[i]==0))
                {
                    ans++;
                }
            }
            i++;
        }
        cout<<ans<<endl;
    }
    return 0;
}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注