作者chrisdar (克里斯)
看板C_and_CPP
標題Re: [ACM ] 107 code已更新
時間Tue Jul 10 15:19:31 2007
#include <iostream>
#include <cmath>
using namespace std;
int main(int argc, char *argv[]) {
int a = 0, b = 0, n = 0;
cin >> a >> b;
for (int i = 2;i <= a;i++) { //找n
float c = logf((float)a) / logf((float)b);
float d = logf((float)i) / logf((float)i - 1);
if (c == d) {
n = i;
break;
}
} // 找k
int k = (int)(logf((float)a) / logf((float)n));
int num = 1, length = a, sum = a, idle = 1;
for (int i = 0;i < k;i++) { //變魔術
num *= (n - 1); //變魔術的貓數
length /= n; //貓的身高
sum += (num * length); //總身高
idle += num; //總貓數
}
cout << idle - num << " " << sum << endl;
system("pause");
return 0;
}
※ 編輯: chrisdar 來自: 163.23.17.131 (07/10 15:20)
1F:推 netneto:對照您的程式碼後,我大概找到問題的所在...再次謝謝 07/10 16:00
2F:→ netneto:您的寫法看起來比我的簡潔有力多了~ 07/10 16:03
3F:推 chrisdar:用了聯立方程式求到超越函數解 只好用代入法測試.. 07/10 20:16
4F:→ chrisdar:我比較擔心logf的效能 遇到in:1M,1M-1 真的很嚴重... 07/10 20:20
5F:→ chrisdar:不知道有誰能改進一下找N的方法...質因數分解法!! 07/10 20:24