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

題目 :
Q107: The Cat in the Hat
一隻神奇聰明貓走進了一間亂七八糟的房間,他不想自己動手收拾,他決定要找幫手來工作。於是他從他的帽子中變出了N隻小貓來幫他(變出來的貓,高度為原來貓的 1/(N 1) )。這些小貓也有帽子,所以每一隻小貓又從他的帽子中變出N隻小小貓來幫他。如此一直下去,直到這些小小小....貓小到不能再小(高度=1),他們的帽子無法再變出更小的貓來幫忙,而這些最小的貓只得動手打掃房間。注意:所有貓的高度都是正整數。

在這個問題中,給你一開始那隻貓的高度,以及最後動手工作的貓的數目(也就是高度為1的貓的數目)。要請你求出有多少隻貓是沒有在工作的,以及所有貓的高度的總和。

Input

每組測試資料一列,有2個正整數分別代表一開始那隻貓的高度,以及最後動手工作的貓的數目。0 0代表輸入結束。

Output

每組測試資料輸出一列,包含2個正整數分別代表有多少隻貓是沒有在工作的,以及所有貓的高度的總和。

Sample Input

216 125
5764801 1679616
64 1
0 0
Sample Output

31 671
335923 30275911
6 127

請問這個方程式要怎麼解 ?
數學題的話我會~但要如何用程式解?

(1 N)^level=high
N^level=total

2007-02-18 12:30:41 · 1 個解答 · 發問者 2 in 電腦與網際網路 程式設計

謝謝你的回答˙˙
不好意思~不過我有點看不太懂你的code耶~
TH = H*(n 1) -1;
TH = H*(n 1) - pow(n,k 1);
printf("%ld %ldnn",NW, TH);
好像有東西跑掉了~~~
有更簡單的方式解決這題嗎?
我才剛開始學>///<

2007-02-19 16:50:38 · update #1

我的程式只寫了: (阿阿~在下才疏學淺)
while(1)
{
scanf("%d %d", &high, &total);

if (high == 0 && total == 0)
break;

if (high == 1 && total == 1)
printf("%d %d\n", 0, 1);
}

2007-02-19 16:52:23 · update #2

測試不對˙˙
216 125
30 671//應該是31 671

可以的話幫我加加註解吧!!!

2007-02-23 17:03:49 · update #3

1 個解答

#include
#include
main(void)
{
float m, lnH;
long int i,k,n,H, W, TH, NW;
start_cat:
printf("Enter height : ");
scanf("%ld", &H);
printf("Enter work cats : ");
scanf("%ld", &W);
if ((0 == H) && (0 == W)) return;
lnH = log(H);
if (W == 1)
   {
   n = 1;
   NW = lnH/log(2);
   TH = H*(n 1) -1;
   }
else
   {
   for (i = 2; i < H; i )
      {
      m = lnH/log(i);
      k = (int) m;
      if (k == m) break;
      }
   n = i-1;
   NW = (pow(n,k)-1)/(n-1);
   TH = H*(n 1) - pow(n,k 1);
   }
printf("%ld %ld\n\n",NW, TH);
goto start_cat;
}
如果有問題, 請來函討論. 不然, 我可能會錯失你再補充的疑點.

2007-02-19 07:23:12 · answer #1 · answered by JJ 7 · 0 0

fedest.com, questions and answers