杭电 Leftmost Digit 题解 & 新发现

这道题题解其他人也写了,用对数证明,证明过程我就不写了。

然后我刚开始做这道题的时候一直WA,也找不出原因,后来用小号实验才发现的,所以把这个不容易被人发现的小错误贴出来提醒大家。

这是我WA代码

#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
#define INF 0x3FFFFFFF;
#define Rep(x,n) for(int x=0;x>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<


这是AC的

#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
#define INF 0x3FFFFFFF;
#define Rep(x,n) for(int x=0;x>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<

也就是说  +=   -= 等这些引用传参的标识符会改变数据类型。

比如 double x;

         int y;

         x+=y;

这个时候x的数据类型不是double。

嗯 就这样了 这个小错误希望对读者有点小帮助。


你可能感兴趣的:(ACM,杭电,Leftmost,Digit,acm,c++)