ZOJ 2674 Strange Limit

2023-10-20 17:20
文章标签 limit zoj 2674 strange

本文主要是介绍ZOJ 2674 Strange Limit,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

ZOJ2674 Strange Limit

downloadsource code (ZOJ2674.c) [recursion, number theory, Euler's theorem]

求a a..a%m!的极限。

欧拉定理的内容是:如果a和n互质,那么aφ(n)=1(mod n);对于任意a, n和较大的b>= φ(n) ,有ab=aφ(n)+b mod φ(n)(mod n)。 证明

于是利用欧拉定理,问题就很简单了,我们把上面问题的极限记为x=gao(a, b=m!)。那么假设y=gao(a, φ(b)),就有x=aφ(b)+ymod b,而如果b=1,显然x=0。



Source:  Andrew Stankevich's Contest #8

Submit      Status

#include <iostream>
#include <cstring>
#include <cstdio>using namespace std;typedef long long ll;ll gcd(ll a, ll b) { return b==0 ? a: gcd(b, a%b); }ll fac[45];
ll p[345] = {2, 3, 5, 7, 11, 13, 17, 23};ll powmod(ll a, ll b, ll m)
{ll ret = 1;for(;b;b>>=1, a=a*a%m) if(b&1) ret = ret*a % m;return ret;
}
ll phi(ll n)
{ll ret = 1;for(int i=0;n>1;i++){if(n%p[i]) continue;ret *= p[i] - 1;n /= p[i];while(n%p[i]==0){ret *= p[i];n /= p[i];}}return ret;
}
ll gao( ll a, ll b)
{if(b==1) return 0;ll d = phi(b);return powmod(a, d+gao(a,d), b);
}
int main()
{fac[0] = 1;for(int i=1;i<33;i++) fac[i] = fac[i-1] * i;bool blank = false;ll a, b;while(scanf("%lld%lld", &a, &b)!=EOF){if(blank) putchar(10);blank = true;printf("%lld\n", gao(a, fac[b]));}
}


Submit      Status

这篇关于ZOJ 2674 Strange Limit的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/248556

相关文章

数论ZOJ 2562

题意:给定一个数N,求小于等于N的所有数当中,约数最多的一个数,如果存在多个这样的数,输出其中最大的一个。 分析:反素数定义:对于任何正整数x,其约数的个数记做g(x).例如g(1)=1,g(6)=4.如果某个正整数x满足:对于任意i(0<i<x),都有g(i)<g(x),则称x为反素数。 性质一:一个反素数的质因子必然是从2开始连续的质数。 性质二:p=2^t1*3^t2*5^t3*7

zoj 1721 判断2条线段(完全)相交

给出起点,终点,与一些障碍线段。 求起点到终点的最短路。 枚举2点的距离,然后最短路。 2点可达条件:没有线段与这2点所构成的线段(完全)相交。 const double eps = 1e-8 ;double add(double x , double y){if(fabs(x+y) < eps*(fabs(x) + fabs(y))) return 0 ;return x + y ;

zoj 4624

题目分析:有两排灯,每排n个,每个灯亮的概率为p,每个灯之间互不影响,亮了的灯不再灭,问两排中,每排有大于等于m个灯亮的概率。 设dp[ i ][ j ]为第一排亮了i个灯,第二排亮了j个灯,距离目标状态的期望天数。显然 i >= m ,j >= m时 , dp[ i ][ j ] = 0 。 状态转移 : 第一排亮了a个灯,a 在[ 0 , n - i] 之间,第二排亮了b个灯 , b 在

zoj 3228 ac自动机

给出一个字符串和若干个单词,问这些单词在字符串里面出现了多少次。单词前面为0表示这个单词可重叠出现,1为不可重叠出现。 Sample Input ab 2 0 ab 1 ab abababac 2 0 aba 1 aba abcdefghijklmnopqrstuvwxyz 3 0 abc 1 def 1 jmn Sample Output Case 1 1 1 Case 2

ZOJ Monthly, August 2014小记

最近太忙太忙,只能抽时间写几道简单题。不过我倒是明白要想水平提高不看题解是最好的了。 A  我只能死找规律了,无法证明 int a[50002][2] ;vector< vector<int> > gmax , gmin ;int main(){int n , i , j , k , cmax , cmin ;while(cin>>n){/* g

ZOJ 3324 Machine(线段树区间合并)

这道题网上很多代码是错误的,由于后台数据水,他们可以AC。 比如这组数据 10 3 p 0 9 r 0 5 r 6 9 输出应该是 0 1 1 所以有的人直接记录该区间是否被覆盖过的方法是错误的 正确方法应该是记录这段区间的最小高度(就是最接近初始位置的高度),和最小高度对应的最长左区间和右区间 开一个sum记录这段区间最小高度的块数,min_v 记录该区间最小高度 cover

【matlab 求极限】limit函数求极限

syms x;y1=(4*x^3-2*x^2+x)/(3*x^2+2*x);limit(y1,x,0) >> syms x;y1=(4*x^3-2*x^2+x)/(3*x^2+2*x);limit(y1,x,0)ans =1/2>>

报错:Reached the max session limit(DM8 达梦数据库)

报错:Reached the max session limit - - DM8 达梦数据库 1 环境介绍2 数据库启动SYSTEM IS READY后面日志3 数据库刚启动日志4 达梦数据库学习使用列表 1 环境介绍 某项目无法连接数据库,报错:超过最大会话数限制 , 检查 dmdba ulimit -a openfiles 已改检查 dm.ini 其中 MAX_SESSION

GC overhead limit exceeded : Spark

我在运行Spark程序的时候报错 java.lang.OutOfMemoryError:GC overhead limit exceeded 伴随着通常有: java.lang.OutOfMemoryError:Java heap spaceorg.apache.spark.shuffle.FetchFailedException:Failed to connect to ... 这是

Orderby limit offset分页

SELECT * FROM table_name WHERE some_column = #{value} ORDER BY id LIMIT #{limit} OFFSET #{offset} // 假设你已经配置了 SqlSession try (SqlSession session = sqlSessionFactory.openSession()) { // 调用 countTotal