?? math_problem.c
字號:
/*問題:
教授選出兩個(gè)從2到9的數(shù),把它們的和告訴學(xué)生甲,把它們的積告訴學(xué)生乙,讓他們輪流猜這兩個(gè)數(shù)
甲說:“我猜不出”
乙說:“我猜不出”
甲說:“我猜到了”
乙說:“我也猜到了”
問這兩個(gè)數(shù)是多少
*/
#include <stdio.h>
/*
adjust()主要是用來判斷這兩個(gè)數(shù)的和或者積中存在的可能情況
*/
int adjust(int m,int type)//m:兩數(shù)之和或者積 type:兩數(shù)的運(yùn)算關(guān)系,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的數(shù)組成,如
和:8=2+6;8=3+5;8=4+4;
積:16=2*8;16=4*4;
同時(shí)把記數(shù)器+1,
*/
case 0: if(i+j==m) counter++;break;
case 1: if(i*j==m) counter++;break;
}
}
}
/*“第一次猜不出來,第二次就猜出來了”就是指經(jīng)過兩次才確定兩個(gè)數(shù)
如果第一次就猜出來了,如4,5(4=2+2;5=2+3)就不符合題意//這時(shí)counter=1
如果大于兩次,如8(8=2+6,8=3+5,8=4+4)也不符合題意//這時(shí)counter=3
*/
if(counter==2)
return 1;
else
return 0;
}
int main()
{
int i,j;
for(i=2;i<10;i++)//根據(jù)題意,都是2~9的正整數(shù)
for(j=2;j<10;j++)
{
if(i<=j)
{
/*
主要是要經(jīng)過第二次才能確定出來兩數(shù)
*/
if(adjust(i*j,1))
if(adjust(i+j,0))
printf("%d,%d\n",i,j);
}
}
return 0;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -