关于本题测试点
2024-06-27 15:40:03
发布于:上海
46阅读
0回复
0点赞
首先,我提交的是这份代码:(WA on #2,#3,#4,#7,#8)
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iomanip>
#include <queue>
#include <cmath>
using namespace std;
int main(){
unsigned long long a,b,x=1;
cin>>a>>b;
a++;
while(b){
if(b&1)x*=a;
a*=a, b>>=1;
}
cout<<x;
return 0;
}
后来提交的是:(AC)
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iomanip>
#include <queue>
#include <cmath>
using namespace std;
int main(){
long long a,b,x=1;
cin>>a>>b;
a++;
while(b){
if(b&1)x*=a;
a*=a, b>>=1;
}
cout<<x;
return 0;
}
AC 代码与 WA 代码的区别仅仅是把 unsigned long long 改成了 long long。于是,我猜想答案爆 ull 了。我将 AC 代码添加了一行 if(x<0) return 1;
交上去:(RE on #2,#3,#4,#7,#8)
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iomanip>
#include <queue>
#include <cmath>
using namespace std;
int main(){
long long a,b,x=1;
cin>>a>>b;
a++;
while(b){
if(b&1)x*=a;
a*=a, b>>=1;
}
if(x<0) return 1; // 如果是负数,直接 RE
cout<<x;
return 0;
}
现在很明确了,答案中存在负数,与
保证 以及答案都在 位无符号整数的表示范围内。
相矛盾。
因此测试点有误。
全部评论 3
ok,知道了。谢谢!
2024-06-28 来自 上海
1d
2024-06-27 来自 上海
1这么细节
2024-06-27 来自 广东
1
有帮助,赞一个