跪求大佬帮忙看看C

c题手写快速幂只能96%,改成pow()调库能AC,不明白为什么手写过不了,球球热心的大佬帮忙看看
最开始以为是long long的问题,后来改成unsigned long long还是一样
QAQ

#include<bits/stdc++.h>
using namespace std;
#define ios ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
typedef long long ll;
typedef unsigned long long ull;
const ull M=1e18;
ull qpow(ull t, ull k)
{
    ull res = 1;
    while (k)
    {
        if (k&1) res = res * t ;
        t = t * t;
        k >>= 1;
    }
    return res;
}
int main() {
    ios
    ull cnt,ans,p,q;
    cin>>p>>q;
    cnt=1;
    while(q<=M){
        cnt++;
        //ans=pow(p,q);可以过
        ans=qpow(p,q);
        if(ans==0)break;
        p=q;
        q=ans;
    }
    cout <<cnt<< endl;
    return 0;
}
全部评论
ull 相比 ll 只有两倍啊,,,你可以用 __int128。
点赞
送花
回复
分享
发布于 2023-04-21 21:47 江苏
反正我是赛时一血,你可以看看我的代码。
点赞
送花
回复
分享
发布于 2023-04-21 21:48 江苏
滴滴
校招火热招聘中
官网直投
可以用double
点赞
送花
回复
分享
发布于 2023-04-21 22:41 广东
同问
点赞
送花
回复
分享
发布于 2023-04-22 16:22 广东

相关推荐

1 收藏 评论
分享
牛客网
牛客企业服务