NH-01.【选做题】Gate

本文带你入门C语言,通过计算第K小质数、特定行列式的个位数、两个数的最大公约数及463与b的最小公倍数的十位数,解决密码门谜题。实例演示如何在代码中实现这些数学运算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

欢迎来到c语言的世界,这是一个诞生于1972年的世界。本系列十六题选做题,将带你游历c语言的世界!

你走到了c语言城堡门口,发现大门紧锁,锁是一个四位密码锁。你的导游表示他也没遇到过这种情况,于是你需要自己解开这个密码。作为本系列的第一关,c语言世界肯定不会为难你,大胆闯关吧!

门的旁边写着提示:第一位数是第K小的质数;第二位数是满足行列式 =0的那个x的绝对值的个位数

第三位数1234和4321的最大公因数;第四位是463和b的最小公倍数的十位数

其中,K,a,b均由读入给出。

易证明,在规定的数据范围内,x一定是正整数。

输入格式:

第一行输入三个正整数数K,a,b

输出格式:

四个数,中间不需要空格隔开,表示密码。

样例输入:

2 1 2

样例输出:

3012

数据范围:

1≤K≤2,1≤a≤6,1≤b≤462

# include<stdio.h>
# include<math.h>
/*门的旁边写着提示:第一位数是第K小的质数;第二位数是满足行列式 =0的那个x的绝对值的个位数;
第三位数1234和4321的最大公因数(1);第四位是463和b的最小公倍数的十位数。
行列式
a 30
24 x 
其中,K,a,b均由读入给出。
易证明,在规定的数据范围内,x一定是正整数。
输入格式:一行输入三个正整数数K,a,b
输出格式:四个数,中间不需要空格隔开,表示密码。*/
int zhi(int k);//得出质数 
int matrix(int a);//求行列式的x 
int bei(int b);//求十位数 


int main()
{
	int k, a, b;
	scanf("%d %d %d", &k, &a, &b);
	printf("%d%d%d%d\n", zhi(k), matrix(a), 1, bei(b));
	
	
}

int zhi(int k)
{
	int i = 1;
	int j = 1;
	int m ;
	while (i <= k)
	{
		
		j ++;//使j=2,得到第一个质数,与i=1对应 
		exit:
		m = 1;
		while (m <= (int)sqrt(j) )
		{
			
			if (j % m == 0 && m != 1)
			{
				j ++;
				goto exit;//若j可被 1以外的数整除(非质数),则跳过它,j++ 
			}
			m ++;
		}//经过遍历m,无法满足if的,为质数,此时的i就是第几个(本次循环前,上次循环最后i已经++ 
		
		i ++;
	}
	return j;
}


int matrix(int a)
{
	int x = 0;
	int g;
	while ((a * x) != 720)
	{
		x ++;
	}//解方程 
	g = x % 10;
	return g;
}


int bei(int b)
{
	int d = 0;
	int ori = 0;
	if (b > 463)
	{
		ori = b;
	}
	else
	{
		ori =463;
	}//令ori为二者中较大的 
	while(ori % 463 != 0 || ori % b != 0)
	{
		ori ++;
	}//使ori逐步增大,直至为公倍数 
	d = (ori / 10) % 10;
	return d;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值