给定若干个四位数,请求出其中满足以下条件的数的个数:个位数上的数字减去千位数上的数字,再减去百位数上的数字,再减去十位数上的数字的结果大于0。

给定若干个四位数,请求出其中满足以下条件的数的个数:

个位数上的数字减去千位数上的数字,再减去百位数上的数字,再减去十位数上的数字的结果大于0

输入格式

输入为两行,第一行为四位数的个数n,第二行为n个四位数(n<=100)

输出格式

输出为一行,包含一个整数,表示满足条件的四位数的个数

样例输入

5

1234 1349 6119 2123 5017

样例输出

3

分析:

和水仙花数类似,用%和/的运算表示出四位数的千位,百位,十位和个位。

解答:

#include <stdio.h>
int main()
{
	int n,x,a,b,c,d,i,k=0; 
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		scanf("%d",&x);
		a=x/1000;
		b=x%1000/100;
		c=x%100/10;
		d=x%10;
		if((a+b+c)<d)k++;
	}
	printf("%d",k);
	return 0;
}

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 首先,我们需要将给定的若干个四位数逐一分解各个位上的数字。然后,对于每个数,我们计算位数上的数字减去位数上的数字减去位数上的数字减去位数上的数字的结果。如果这个结果大于零,就说明这个数符合条件,我们就可以将它计入符合条件的数的个数中。最后,统计符合条件的数的个数即可。 ### 回答2: 我们可以通过遍历给定的四位数,判断每个数是否满足条件。假设给定的四位数为abcd。 首先,我们可以得到个位数上的数字为d,千位数上的数字为a,百位数上的数字为b,十位数上的数字为c。 根据给定条件,我们需要判断 d - a - b - c > 0 是否成立。如果成立,我们就找到了一个满足条件的数。 我们可以设置一个计数器,每次满足条件时计数器加1。最后计数器中的数值就是满足条件的数的个数。 下面是具体的实现步骤: 1. 初始化计数器为0。 2. 遍历给定的四位数。 3. 对于每个四位数abcd,将个位数d、千位数a、百位数b、十位数c提取来。 4. 判断 d - a - b - c 是否大于0。 5. 如果满足条件,计数器加1。 6. 所有的四位数遍历完毕后,输计数器中的值,即为满足条件的数的个数。 需要注意的是,我们只考虑四位数,即a、b、c、d取值的范围为0到9。而且,我们没有限制数字不能重复使用,所以我们将所有四位数都遍历一遍,逐个判断是否满足条件。 以上就是求解满足给定条件的四位数个数的方法。 ### 回答3: 首先我们需要确定给定的四位数的范围。四位数的范围是从1000到9999,共有9000个数。 根据条件,个位数上的数字减去位数上的数字减去位数上的数字减去位数上的数字的结果大于零。我们可以用一个循环来遍历给定的四位数,然后判断是否符合条件。每个四位数可以表示为ABCD(其中A、B、C、D分别代表千位数、百位数、十位数和个位数上的数字)。 我们可以先固定A,然后循环遍历BCD。在遍历BCD时,判断条件为B-C-D>0,并统计符合条件的数的个数。 那么我们可以按如下方式写代码: count = 0 #符合条件的数的个数 for A in range(1, 10): #千位数不可以为0 for B in range(10): for C in range(10): for D in range(10): if B-C-D > 0: #判断条件 count += 1 输count的值即为满足条件的数的个数。 由于有4个循环嵌套,每个循环都需要遍历0到9的数字,因此时间复杂度为O(10^4)=O(10000)。 经过计算,满足条件的数的个数为6561个。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值