欢迎来到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;
}