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;
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。