Happy Equation ZOJ - 4123 (数论)

 题目链接:ZOJ - 4123

 题目大意:给你a和p,然后问你[1,2^p]中满足那个等式的值有多少个。

具体思路:

具体的证明:https://blog.csdn.net/v5zsq/article/details/79325038

打表发现当a为奇数的时候答案为1.当a为偶数的时候,x也必须为偶数。

然后我们将a分解为2*t。然后a^x就等于 (2^x)*(t^x).当x大于p的时候,此时取模后一定为0。对于所以在x属于[0,p]这段区间暴力算。

然后我们将b分解为(2^k)*t.然后b^x就等于 (2^(k*x)) *(t^x).然后对于k*x>p的时候,我们可以直接算出这段区间中满足情况的x的取值有多少x>(p/k)(向上取整).然后再减去暴力算的那一块就好了。

AC代码:

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 # define ll long long
 4 # define inf 0x3f3f3f3f
 5 const int maxn = 2e5+100;
 6 ll qsm(ll t1,ll t2,ll mod)
 7 {
 8     ll ans=1ll;
 9     while(t2)
10     {
11         if(t2&1)
12             ans=ans*t1%mod;
13         t1=t1*t1%mod;
14         t2>>=1;
15     }
16     return ans;
17 }
18 int main()
19 {
20     int T;
21     scanf("%d",&T);
22     while(T--)
23     {
24         ll a,p;
25         scanf("%lld %lld",&a,&p);
26         if(a%2!=0)
27         {
28             printf("%lld\n",1);
29             continue;
30         }
31         ll t1=(1ll<<p);
32         ll sum=0;
33         for(ll i=1; i<=p; i++)
34         {
35             if(qsm(a,i,t1)==qsm(i,a,t1))
36                 sum++;
37         }
38         ll tmp=(p/a)+(p%a==0?0:1);
39         sum=sum+(t1>>tmp)-(p>>tmp);
40         printf("%lld\n",sum);
41     }
42     return 0;
43 }

原文地址:https://www.cnblogs.com/letlifestop/p/10860998.html

时间: 2024-08-29 17:34:45

Happy Equation ZOJ - 4123 (数论)的相关文章

K - Happy Equation(ZOJ 4123)

Time Limit : 1 Second      Memory Limit : 65536 KB Source : 第十届山东省ACM省赛 Problem Link : ZOJ 4123 Author : Houge Date : 2019-5-24 看了快一周的k题,看了好多题解,还是不明白,只恨自己不是数论大佬.昨天看了本校数竞大佬Ch_3225的题解,感觉还不错,和我目前看过的都不太一样(但还是看不懂).征得同意后,这里就直接copy上来了. (注意:在此篇题解中,为码字方便,记a^b

2019山东省赛K - Happy Equation ZOJ - 4123 题解

题意: 一个数论题,要求满足如下等式的x有多少个. 思路: 当时比赛是,队伍看到这个题,也没有做太多的思考,就是无从下手,几乎放弃.但是看到学校另外两支队伍都过了这个题,感觉自己还是好菜. 打表可以发现,当a为奇数的时候答案为1.当a为偶数的时候,x一定也是偶数,这个还是比较明显的. 对左边进行推导,因为a为偶数,设a=2*t,所以a^x=2^x*t^x,所以当x大于p时,这个求余之后一定为0.由于p很小,可以直接暴力求解,所以对于右边直接考虑x^a求余之后为0的x的情况.由于x为偶数.我们再次

zoj 3665 数论 二分 两个参数

http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4888 两个参数的题,处理方法:枚举小的那个参数,然后二分大的参数 想到二分了,然后两个参数就不会了  然后暴力了下,但是其实K可以很大 所以时间不够 自己写的二分枚举+快速幂程序WA了很久....没明白哪里错了  参考了别人的... //#pragma comment(linker, "/STACK:102400000,102400000") #include &l

zoj 3665 数论 二分法 两个参数

http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4888 标题两个参数,途径:小参数的枚举,然后二分法大参数 想想两个点.以后就不会了两个参数  然后在暴力,实上K能够非常大 所以时间不够 自己写的二分枚举+高速幂程序WA了非常久. .. .没明确哪里错了  參考了别人的... //#pragma comment(linker, "/STACK:102400000,102400000") #include <c

ZOJ 2277 (数论)

The Gate to Freedom Time Limit: 2 Seconds      Memory Limit: 32768 KB Background It is dark at night. It is silence at night. It is she in the dark. It is she in the silence. Then a light appeared. A huge gate came into our sights, called The Gate to

[数学+dfs] ZOJ 3753 Simple Equation

题目链接: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5176 Simple Equation Time Limit: 2 Seconds      Memory Limit: 65536 KB There are many Equations. Some are difficult to solve, for example: an xn + an-1 xn-1 + .. + a0 = 0. In this probl

ZOJ 1136 Multiple(BFS + 数论 同余剪枝 搜索数字的倍数 )

ZOJ Problem Set - 1136 Multiple Time Limit: 10 Seconds Memory Limit: 32768 KB a program that, given a natural number N between 0 and 4999 (inclusively), and M distinct decimal digits X1,X2..XM (at least one), finds the smallest strictly positive mult

ZOJ 3785 What day is that day? 数论

LINK: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3785 题意:求 \(1^1+2^2+3^3+…+n^n\) 加1模7的值 思路:其实这题是找规律题...说数论是不甘心,这题卡了好久,借助python打表发现 指数每6循环 n值每7循环 6*7=42 但每42个数后它们的排列就会发生改变,共改变7次,所以总循环周期为42*7=294,预处理记录一下就好. /** @Date : 2017-03-23-23.0

数论 + 扩展欧几里得 - SGU 106. The equation

The equation Problem's Link Mean: 给你7个数,a,b,c,x1,x2,y1,y2.求满足a*x+b*y=-c的解x满足x1<=x<=x2,y满足y1<=y<=y2.求满足条件的解的个数. analyse: 做法是扩展欧几里德. 1.首先是欧几里德算法,欧几里德算法是用于求任意两个数的最大公约数(gcd(a,b)), 这个方法基于一个定理,gcd(a,b)=gcd(b,a % b)(a>b),%表示取模. 我们来证明上述定理,因为a>b,