下面是我编写的用于查找 6 的指数的程序,但我给出了错误的输出,或者我可能在某个地方出错,我无法在这里弄清楚。
#include<bits/stdc++.h>
using namespace std;
#define ll long long
int main()
{
ll t;
cin>>t;
cout<<log(t)/log(6)<<"\n";
cout<<floor(log(t)/log(6))<<"\n";
cout<<ceil(log(t)/log(6));
return 0;
}
输入:-
216
输出:-
3
3
4
由于216可以写成6*6*6,所以无论是 ceil 还是 floor ,三种情况下的输出都应该是 3。
回答我自己的问题,这个问题可以通过设置小精度(这里最多 2 个十进制数字)来解决,下面是相同的程序。
#include<bits/stdc++.h>
using namespace std;
int main()
{
int t;
cin>>t;
cout<<log(t)/log(6)<<"\n";
cout<<floor((floor(log(t)/log(6)*100.0)/100.0))<<"\n";
cout<<ceil((floor(log(t)/log(6)*100.0)/100.0));
return 0;
}