问题 B: 反序数

题目描述

设N是一个四位数,它的9倍恰好是其反序数(例如:1234的反序数是4321)

求N的值

输入

程序无任何输入数据。

输出

输出题目要求的四位数,如果结果有多组,则每组结果之间以回车隔开。

tips

循环次数不是1000-9999

代码

#include<stdio.h>

int main()
{	int n9;
	int sum;
	int temp;
	for(int i=1000;i<1112;i++)
	{
		n9=i*9;
		sum=0;
		temp=i;
		for(int j=0;j<4;j++)
		{
			int t=temp%10;
			sum=sum*10+t;
			temp/=10;
		}
		if(sum==n9)
		printf("%d\n",i);
	}
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 设n的四个数字分别为a、b、c、d,则n=1000a+100b+10c+d。它的反序数为d×1000+c×100+b×10+a。根据题意,有: n×9=d×1000+c×100+b×10+a 将n代入上式,得: (1000a+100b+10c+d)×9=d×1000+c×100+b×10+a 化简得: 8999a+890b+81c=8d 因为a、b、c、d都是整数,所以8d必须是81的倍数,即d必须是10的倍数。因此,d只能是0或者10。如果d=0,则81c必须是890b的倍数,而81和890没有公因数,因此b和c都必须是81的倍数,但是b和c都是一位数,不可能是81的倍数,因此d不能是0。因此,d=10,代入原式得: 8999a+890b+81c=80 因为a、b、c都是整数,所以8999a+890b+81c必须是80的倍数,而80=2^4×5,因此8999a+890b+81c必须是2^4和5的倍数。因为81和5没有公因数,所以c必须是5的倍数,而因为8999和890都是偶数,所以b也必须是偶数。因此,b只能是2或者4,c只能是0或者5。如果b=2,c=0,则8999a=80-2×890=80-1780=-1700,这显然不可能。如果b=2,c=5,则8999a=80-2×890-81×5=80-1780-405=-2105,这也不可能。如果b=4,c=0,则8999a=80-4×890=80-3560=-3480,这也不可能。因此,唯一的可能是b=4,c=5,代入原式得: 8999a+3560+405=80 8999a=-3885 这显然不可能,因此没有符合条件的四位数n。 ### 回答2: 作为一名人工智能,我将用数学方法为大家解答四位反序数的问题。 题目中给出的四位数可以表示为ABCD,其中A、B、C、D为各位数字,由题目可知: 10^3 A + 10^2 B + 10C + D = 9 (1000D + 100C + 10B + A) 化简后,得到以下方程: 1001A - 899D - 90B = 0 这是一个关于A、B、D的一元一次方程,因为A、B和D都是单个数字,所以我们可以直接用试错法求解。 我们可以发现,如果D为1或2时,1001A - 899D - 90B的值不可能是0;如果D为3时,1001A - 899D的值只能是1001、2002、3003、4004中的一个,但是在这四个数中,只有3003满足90B也是一个两位数;如果D为4时,1001A - 899D的值只能是2002,而2002中9倍数的各位数字加起来必须是9,而2002的各位数字加起来是4,因此D不能为4。 因此,最终结果是: 反序数为3078,原数为7803。 以上是本人的数学方法,希望对大家有所帮助。 ### 回答3: 这道数学题可以用列式来解决。 首先,设这个四位数为abcd,其中a、b、c、d分别表示它的千位、百位、十位和个位。它的反序数为dcba。 根据题意,我们可以列出方程: 9 × abcd = dcba 将abcd表示成1000a + 100b + 10c + d的形式,dcba表示成1000d + 100c + 10b + a的形式,代入上式,得到: 9 × (1000a + 100b + 10c + d) = 1000d + 100c + 10b + a 化简得到: 8999a + 890b - 110c - 8999d = 0 因为a、b、c、d都是整数,所以该式可以转化成: a = d b = c + 1 将其代入原方程中,得到: 9 × (1001a + 110b) = 10000a + 1000b 化简得到: 899a = 110b 因为a和b是整数,所以b必须是11的倍数。由于b最大只能为9,所以b只能等于11。此时,a等于10,也就是说,abcd的千位为1,百位为0,十位为1,个位为9。因此,abcd为1109,它的反序数是9011。验证一下,9011的9倍确实是它的反序数1109。 综上所述,四位反序数是1109。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值