poj 1552 Doubles(简单的模拟一下)

简介:
Time Limit: 1000MS   Memory Limit: 10000K
Total Submissions: 16425   Accepted: 9404

Description

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.

Input

The input 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.

Output

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

Sample Input

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

Sample Output

3
2
0

Source

分析:

(1)题意:求每行中有二倍关系的数字的组数。

(2)模拟,因为每行最多不超过14个数字,数字的范围是99以内所以开辟一个100大小的数组,使用标记位的方法标记这个数字是否存在,这样判断二倍关系是就方便了许多

复制代码
#include <stdio.h>

int main()
{
    int i,num[100],index,count;
    while(1)
    {
        //将数组初始化-1
        for(i=0;i<100;i++)num[i] = -1;
        count = 0;
        scanf("%d",&index);
        if(index==-1)break;
        while(1)
        {
            num[index]=1;
            scanf("%d",&index);
            if(index==0)break;
        }
        for(i=0;i<100;i++)
        if(i*2<100&&num[i]==1&&num[i*2]==1)
        count++;
        printf("%d\n",count);
    }
    return 0;
}
复制代码

 










本文转自NewPanderKing51CTO博客,原文链接:http://www.cnblogs.com/newpanderking/archive/2012/10/05/2711995.html,如需转载请自行联系原作者




相关文章
|
1月前
|
算法 测试技术 C#
【动态规划】1223. 掷骰子模拟
【动态规划】1223. 掷骰子模拟
|
5月前
【每日一题Day114】LC1223 掷骰子模拟 | 记忆化搜索+dp
【每日一题Day114】LC1223 掷骰子模拟 | 记忆化搜索+dp
32 0
|
4月前
代码随想录Day36 动态规划05 LeetCode T1049最后一块石头的重量II T494 目标和 T474 一和零
代码随想录Day36 动态规划05 LeetCode T1049最后一块石头的重量II T494 目标和 T474 一和零
34 0
|
9月前
力扣 模拟小专题
力扣 模拟小专题
33 0
|
10月前
|
存储 机器人 C++
leetcode 每日一题 874. 模拟行走机器人 c++模拟解法
简单来说就是机器人在一个矩阵上移动 我们要找到一个离原点的一个最大欧式距离的平方
97 0
|
7月前
poj 1068 模拟
大概题意就是告诉你有个n个小括号,每一个“)”左边有多少个“(”都告诉你了,然后让你求出每一对括号之间有多少对括号(包含自己本身)。 思路: 我先计算每个“)”左边有多少个“(”要匹配,然后每遇到一个“)”,然后向前寻找第一个可以匹配的“(”,找到后将其数量减一,这样的话在寻找的过程中经过了几个“)”就表示这对括号里面有多少括号。
14 0
|
7月前
|
机器学习/深度学习 算法 C++
剑指offer(C++)-JZ61:扑克牌顺子(算法-模拟)
剑指offer(C++)-JZ61:扑克牌顺子(算法-模拟)
|
存储
【每日一题Day88】LC2293极大极小游戏 | 模拟 递归
思路:数组中的元素被使用过就不再被使用,因此可以将第i ii对计算得到的结果,存储至nums[i]
63 0
|
C语言
动态规划与模拟
我的通过代码: 总体思路是找到第一个打印的数与n的关系(first=n*(n+1)/2)。第一行最多有n个数,之后n--,找一个数保存最大列,然后答案印完一行,列数就减一。
104 0
动态规划与模拟
洛谷P1067-多项式输出(模拟好题!)
洛谷P1067-多项式输出(模拟好题!)