English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

妳再心裡想一個非負整數
且從43.57這2個數字中選一個
(都不可以說出來唷!! )

然後將心裡想的數與選的數相乘
如果你只告訴我計算結果的末兩位數
那我一定能夠很快的猜透你心裡所想的數字跟你所選的數字
你能知道其中的玄機嗎??

徵求回答者!!
贈送20點數唷~~
   ^_____^

2006-12-27 05:18:23 · 2 個解答 · 發問者 Viola H 1 in 電腦與網際網路 程式設計

一開始是再心裡想一個不超過50的非負整數

2006-12-27 05:59:33 · update #1

TO: 心冷
看不太懂你寫的那個程式ㄟ
那是要把它貼在哪裡??
那會顯示出什麼東西呢??
可以說清楚一點嗎??

謝謝 ^_____^

2006-12-27 15:55:12 · update #2

2 個解答

您心理想的是 1~49 的數把.
然後再選43 或是 57
你會發現 1*43 2*43 ... 49*43 , 1*57 2*57 ... 49*57 產生出來的數字的末兩位數都不一樣.
因此只要知道乘出來的結果.的末兩位數字. 就可以反推回去你想的(1~49) 跟妳選的數字了.

// 下面給妳一個程式. 就是此遊戲. 可用VC++ compiler
#include
#include
struct BeGuess
{
int a;
int b;
};

BeGuess table[100];

void delay()
{
clock_t t=clock();
while( (clock() - t) < 3 );
}

#define BeCh1 43
#define BeCh2 57
bool init() // 建立對照表
{
int i;
int x;
for( i = 0 ; i < 100 ; ++i)
{
table[i].b=0;
}
for( i = 1 ; i < 50 ; ++i)
{
x=i*BeCh1;
if( table[x%100].b != 0 ) return false;
table[x%100].a=i;
table[x%100].b=BeCh1;

x=i*BeCh2;
if( table[x%100].b != 0 ) return false;
table[x%100].a=i;
table[x%100].b=BeCh2;
}
return true;
}


void main()
{
int r;
int i,j;
init();
printf("請心理想一個1~49的數字 A\n");
printf("請把A 乘上 %d 或 %d\n",BeCh1,BeCh2);
printf("現在請把乘積的末兩位數字告訴我:");
scanf("%d",&r);
if( r >= 100 )
{
printf("輸入錯務拉");
return;
}
for( i = 0 ; i < 15 ;++i)
{
printf(".");
delay();
}
printf("\n");
printf("我將猜出你心理想的數字 跟您選的數字分別是\n");
printf("%d %d\n",table[r].a,table[r].b);
}



2006-12-29 18:05:31 補充:
這邊是C/C 討論版. 那個程式當然是C/C 的程式.

2006-12-27 13:21:35 · answer #1 · answered by SiYu 5 · 0 0

我覺得那是不可能的事
要不就是你寫錯題目了
我的末兩位數是 00.

我所想的數字跟我所選的數字是什麼?
我告訴你
我自己都不知道呢

怎麼說?
我還在考慮 "想100" 還是 "想200"
而不管我選那一個數 (43 或 57)
相乘結果的末兩位數都是 00.

請問 我自己都還沒決定的數
你怎麼猜?

2006-12-27 05:57:29 · answer #2 · answered by JJ 7 · 0 0

fedest.com, questions and answers