这道题题解其他人也写了,用对数证明,证明过程我就不写了。
然后我刚开始做这道题的时候一直WA,也找不出原因,后来用小号实验才发现的,所以把这个不容易被人发现的小错误贴出来提醒大家。
这是我WA代码
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<vector>
#include<cmath>
#include<queue>
#include<stack>
using namespace std;
#define INF 0x3FFFFFFF;
#define Rep(x,n) for(int x=0;x<n;++x)
#define Rep2(x,l,n) for(int x=l;x<n;++x)
typedef long long ll;
const int MAXN = 100010;
int main()
{
int t;
cin>>t;
while(t--)
{
long long n;
cin>>n;
double x=n*1.0*log10(double(n));
int m=floor(x);
x-=m;
int ans=pow(10.0,x);
cout<<ans<<endl;
}
return 0;
}
这是AC的
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<vector>
#include<cmath>
#include<queue>
#include<stack>
using namespace std;
#define INF 0x3FFFFFFF;
#define Rep(x,n) for(int x=0;x<n;++x)
#define Rep2(x,l,n) for(int x=l;x<n;++x)
typedef long long ll;
const int MAXN = 100010;
int main()
{
int t;
cin>>t;
while(t--)
{
long long n;
cin>>n;
double x=n*1.0*log10((double)n);
double m=floor(x);
x-=m;
int ans=pow(10.0,x);
cout<<ans<<endl;
}
return 0;
}
也就是说 += -= 等这些引用传参的标识符会改变数据类型。
比如 double x;
int y;
x+=y;
这个时候x的数据类型不是double。
嗯 就这样了 这个小错误希望对读者有点小帮助。