-1
这是spoj中“在实验室中的原子”的问题。 http://www.spoj.com/problems/ATOMS/long long int和long double的区别是什么?
下面的代码是给我TLE在SPOJ
在它明确提到,N,M,K是整数的问题。
#include <iostream>
#include <algorithm>
#include <stdio.h>
#include <complex>
#define ll long long int
using namespace std;
int main()
{
ll p;
scanf("%lld",&p);
while(p--)
{
ll n,m,k;
ll ans=0;
scanf("%lld%lld%lld",&n,&k,&m);
while(n<=m)
{
ans++;
n*=k;
}
if(ans>0)printf("%lld\n",ans-1);
else
printf("0\n");
}
return 0;
}
而下面的代码是给予AC在SPOJ
#include <iostream>
#include <algorithm>
#include <stdio.h>
#include <complex>
#define ll long long int
using namespace std;
int main()
{
ll p;
scanf("%lld",&p);
while(p--)
{
long double n,m,k;
ll ans=0;
scanf("%Lf%Lf%Lf",&n,&k,&m);
while(n<=m)
{
ans++;
n*=k;
}
if(ans>0)printf("%lld\n",ans-1);
else
printf("0\n");
}
return 0;
}
2码之间的唯一区别是长长整型,长一倍。 任何人都可以澄清为什么发生这种情况? 在此先感谢。
我不明白你的解释,你能解释它与我问的相关吗? – rap
@rap,我为您的代码添加了一个可能的原因 –
即使它给出了scanf(“%lld”,&p); – rap