看板 C_and_CPP 關於我們 聯絡資訊
#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)
netneto:對照您的程式碼後,我大概找到問題的所在...再次謝謝 07/10 16:00
netneto:您的寫法看起來比我的簡潔有力多了~ 07/10 16:03
chrisdar:用了聯立方程式求到超越函數解 只好用代入法測試.. 07/10 20:16
chrisdar:我比較擔心logf的效能 遇到in:1M,1M-1 真的很嚴重... 07/10 20:20
chrisdar:不知道有誰能改進一下找N的方法...質因數分解法!! 07/10 20:24