几种整数趣题

今天还是继续上次的整数相关趣味题进行练习;
下面就是这几道题目,这些题目的解决方法很实用,不止这几题,对很对类似题目也适用。

1.求个位数是6 且能被 3 整除的五位数:

据题意可知,满足基本条件的五位数都是这种 10006, 10016,。。。。。99996 这种,可设基础数 I= 1000(i= 1000 ~ 9999),

通过计算  i* 10 + 6就可以得到满足基本条件的数。只需在这些数中判断是否能被 3 整除.

程序如下:
#include <stdio.h>

int main()
{
	long int i;
	
	int count = 0;
	
	for(i = 1000; i < 9999; i++)
	{
		if((i*10+6)%3 == 0)
		{
			count++;
		}
	}
	
	printf("count = %d\n",count);
	
	return 0;
}

2.一个自然数的七进制表达式一个三位数,它的九进制表达也是三位数,且这两个三位数表示的数码正好相反:

由题意可知,这两种进制的数码每一位都小于7(不然不满足七进制),所以可以设它七进制表示为ijk, 那么九进制表示就为 kji。

程序如下:
#include <stdio.h>

int main()
{
	int i;
	
	for(i = 0; ; i++)
	{
		if(((i*8+7)*8+1) *8+1== (34*i+15)*17+4)
		{
			printf("The required number is :%d\n",(34*i+15)*17+4);
			break;
		}
	}
	
	return 0;
	
}

3.设N 是一个四位数,它的九倍恰好是它的反序数(反序数就是把整数的数字倒过来形成的整数,如1234的反序数是4321)

由题目可知,我们设N的个十百千位分别为:l,k,j,i,(0~9),

满足关系式(i * 10^3 + j * 10^2 + k * 10 +l) * 9 == l * 10^3 +k * 10^2 + j * 10 + I 的即位所求N 的各个位。

程序如下:
#include <stdio.h>

int main()
{
    int i;
    
    for(i = 1002; i < 1111; i++)
    {
        if(i%10*1000 + i/10%10*100 + i/100%10*10 + i/1000 == i * 9)
        {
            printf("The number satisfied states conditin is :%d\n",i);
        }
    }
    
    return 0;
}

这些程序虽然很简单,不过提醒我们解决问题要多多思考,不要去死板的运用,要符合实际。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值