《ACM 书中题目》 M

来源:互联网 发布:java获取文件的根目录 编辑:程序博客网 时间:2024/06/12 01:09
  • 题目

    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函数
0 0
原创粉丝点击