两倍

总时间限制: 1000ms  内存限制: 65536kB
描述
给定2到15个不同的正整数,你的任务是计算这些数里面有多少个数对满足:数对中一个数是另一个数的两倍。

比如给定1 4 3 2 9 7 18 22,得到的答案是3,因为2是1的两倍,4是2个两倍,18是9的两倍。
输入
输入包括多组测试数据。每组数据包括一行,给出2到15个两两不同且小于100的正整数。每一行最后一个数是0,表示这一行的结束后,这个数不属于那2到15个给定的正整数。输入的最后一行只包括一个整数-1,这行表示输入数据的结束,不用进行处理。
输出
对每组输入数据,输出一行,给出有多少个数对满足其中一个数是另一个数的两倍。
样例输入
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
下面是代码:
#include <stdio.h>

int main()
{
    int a[101];
    int i;
    int k,j,count;
    while(1)
    {
        i = 0;
        count = 0;
    while(scanf("%d",&a[i]))
    {
        if(a[i] == -1) return 0;
        if(a[i]==0)
            break;
        i++;
    }
    k = i;
    for(i = 0;i < k;i++)
        for(j = 0;j < k;j++)
        if(a[i]/a[j]==2&&a[i]%a[j]==0)
        count++;
    printf("%d\n",count);
    }
    return 0;
}

ps:注意输入末尾,和数据处理的末尾。
### 使用 `while` 实现两倍循环逻辑 在编程中,所谓“两倍循环”通常指的是某种形式的加倍操作。例如,在每次迭代中将某个值翻倍,或者让循环次数本身基于某一条件动态调整至原来的两倍。下面详细介绍两种不同的实现方式。 #### 方式一:每次迭代都将变量值翻倍 此场景下,我们希望在每一次循环过程中都对特定变量进行乘以2的操作直到达到指定的目标为止[^1]。 ```python number = 1 # 初始数字 target = 100 # 设定目标上限 iterations = 0 # 统计总共进行了几次运算 while number <= target: print(f"第{iterations}轮, 当前数值={number}") number *= 2 # 对当前数值做双倍处理 iterations += 1 # 记录已发生的循环数量 print(f"\n总计发生了{iterations}次翻倍动作") ``` 在此脚本片段里,只要 `number` 不超出预先设定好的界限(`target`),它就会持续不断地自我复制增长;一旦超过了既定阈值便会自动停止进一步的动作[^4]。 #### 方式二:根据一定规则使总循环数变成原计划的一半再取整后的两倍 假设原本打算只简单地重复固定几回(比如说N),但现在想让它按照原来预计数目的一半向上舍入后再恢复成完整的偶数版本(N')来进行运作的话可以这样做[^3]: ```python import math original_cycles = 7 # 预期原始周期长度 adjusted_cycles = int(math.ceil(original_cycles / 2)) * 2 # 调整后的周期长度计算公式 cycle_count = 0 # 初始化计数器为零准备记录实际走过的路径条目总数 while cycle_count < adjusted_cycles: print(f"正在进行第{(cycle_count % original_cycles)+1}/{original_cycles}(按原规模划分)阶段...") cycle_count += 1 # 每完成一轮就给我们的全局统计加上一份贡献度 print("\n全部预定环节均已顺利完成!") ``` 这里运用到了Python内置库中的`math`模块里的函数帮助完成了向上取最近的大于等于自身的整数这一功能[`ceil()`], 并且巧妙借助求余运算符 `%`, 达到即便整体扩增了一番却依旧能清晰展示每一个独立子区间的效果[^5]. --- ### 总结说明 无论是针对单个数据项不断施行放大效应还是重新规划总体框架内的行动频次安排,"while"都可以凭借其灵活性胜任此类任务的核心角色扮演者之一. 只需确保内部存在恰当的变化驱动力量促使判定依据逐步趋向不符合延续前提的方向发展便可有效规避可能出现的无限运转风险[^2].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值