ZOJ 4123

博客围绕Happy Equation展开,题意是求满足给定等式的x的数量。参考了几篇相关博客,通过打表发现当a为奇数时,等式解的数量答案为1。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Happy Equation
题意:
给出的那个等式,问有多少个x满足等式,就酱;

参考了几篇博客:
(感觉这个比较好理解)
https://blog.youkuaiyun.com/v5zsq/article/details/79325038

https://www.cnblogs.com/albert-biu/p/10864882.html?tdsourcetag=s_pcqq_aiomsg
在这里插入图片描述
打表发现当a为奇数的时候答案为1

#include <iostream>
#include <algorithm>
#include <string>
#include <map>
#include <cstring>
#include <cmath>
#include <queue>
#include <cstdio>
#include <vector>
#include <set>
#include <stack>
using namespace std;
typedef long long ll;
const int N = 1e6+10;
const int INF=0x3f3f3f3f;
const ll LINF=0x3f3f3f3f3f3f3f3f;
const int MOD=1e9+7;
#define rep(i,a,b) for(int i=a;i<=b;i++)
#define Abs(x) ((x)>=0?(x):-(x))
ll mod;
ll qpow(ll base,ll p){
    ll ans=1;
    while(p){
        if(p&1) ans=ans*base%mod;//这个地方需要注意取余
        p>>=1;
        base=base*base%mod;
    }
    return ans;
}
int main()
{
    #ifndef ONLINE_JUDGE
    freopen("in.txt","r",stdin);
    #endif // ONLINE_JUDGE
    int T;
    scanf("%d",&T);
    while(T--){ll a,p;
        scanf("%lld%lld",&a,&p);
        int cnt=0;
        if(a&1){printf("1\n");continue;}

        ll ans=0;
        mod=pow(2,p);
        for(int x=1;x<=p;x++)
            if(qpow(a,x)==qpow(x,a))
                ans++;
        ll m=p/a;
        if(p%a) m++;//上取整

        ans+=mod/qpow(2,m)-(p)/qpow(2,m);
        printf("%lld\n",ans)    ;
    }
    return 0;
 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值