📄 math_problem.c
字号:
/*问题:
教授选出两个从2到9的数,把它们的和告诉学生甲,把它们的积告诉学生乙,让他们轮流猜这两个数
甲说:“我猜不出”
乙说:“我猜不出”
甲说:“我猜到了”
乙说:“我也猜到了”
问这两个数是多少
*/
#include <stdio.h>
/*
adjust()主要是用来判断这两个数的和或者积中存在的可能情况
*/
int adjust(int m,int type)//m:两数之和或者积 type:两数的运算关系,0-和,1-积
{
int i,j,counter=0;
for(i=2;i<10;i++)
for(j=2;j<10;j++)
{
if(i<=j)
{
switch(type)
{
/*
判断和或者m可能由哪些2~9的数组成,如
和:8=2+6;8=3+5;8=4+4;
积:16=2*8;16=4*4;
同时把记数器+1,
*/
case 0: if(i+j==m) counter++;break;
case 1: if(i*j==m) counter++;break;
}
}
}
/*“第一次猜不出来,第二次就猜出来了”就是指经过两次才确定两个数
如果第一次就猜出来了,如4,5(4=2+2;5=2+3)就不符合题意//这时counter=1
如果大于两次,如8(8=2+6,8=3+5,8=4+4)也不符合题意//这时counter=3
*/
if(counter==2)
return 1;
else
return 0;
}
int main()
{
int i,j;
for(i=2;i<10;i++)//根据题意,都是2~9的正整数
for(j=2;j<10;j++)
{
if(i<=j)
{
/*
主要是要经过第二次才能确定出来两数
*/
if(adjust(i*j,1))
if(adjust(i+j,0))
printf("%d,%d\n",i,j);
}
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -