POJ 3761 Bubble Sort(乘方取模)
点我看题目
题意 : 冒泡排序的原理众所周知,需要扫描很多遍。而现在是求1到n的各种排列中,需要扫描k遍就变为有序的数列的个数,结果模20100713,当然了,只要数列有序就扫描结束,不需要像真正的冒泡排序要扫描n-1遍。
思路 : 这个题的结果是K!((K + 1) ^ (N - K) - K ^ (N - K))。需要用到逆序数,此题具体推导。
1 //POJ 3761 2 #include <iostream> 3 #include <stdio.h> 4 #include <string.h> 5 6 using namespace std; 7 const __int64 mod = 20100713LL ; 8 __int64 factorial[1010000] ; 9 10 void chart() 11 { 12 factorial[0] = factorial[1] = 1; 13 for(int i = 2 ; i <= 1000000 ; i++) 14 factorial[i] = factorial[i-1]*i % mod ; 15 } 16 17 __int64 multimod(__int64 x,__int64 n ) 18 { 19 __int64 tmp = x ,res = 1LL ; 20 while(n) 21 { 22 if(n & 1LL) 23 { 24 res *= tmp ; 25 res %= mod ; 26 } 27 tmp *= tmp ; 28 tmp %= mod ; 29 n >>= 1LL ; 30 } 31 return res ; 32 } 33 int main() 34 { 35 __int64 t,n,k ; 36 __int64 ans1,ans2,ans ; 37 chart() ; 38 scanf("%I64d",&t) ; 39 while(t--) 40 { 41 scanf("%I64d %I64d",&n,&k) ; 42 if(k == 0) { 43 printf("1\n") ; 44 continue ; 45 } 46 ans1 = ans2 = factorial[k] ; 47 ans1 *= multimod(k+1,n-k) ; 48 ans1 %= mod ; 49 ans1 += mod ; 50 ans2 *= multimod(k,n-k) ; 51 ans2 %= mod ; 52 ans = (ans1-ans2)%mod ; 53 printf("%I64d\n",ans) ; 54 } 55 return 0; 56 }
View Code
转载于:https://www.cnblogs.com/luyingfeng/p/3645981.html
POJ 3761 Bubble Sort(乘方取模)相关推荐
- 乘方取模计算(模幂计算)
乘方取模计算也称为模幂计算,在密码系统中经常使用,是不可缺少的. 使用本程序可以解HDU2035,只需要考虑输入和输出. /** 乘方取模** 已知给定的正整数a.n和m,计算x的值,a^n = x ...
- 【算法编程】乘方取模
须知: 编程题中有时会出现大数的乘方取模,此时我们不能使用简单的pow函数. 例如(a^b)%m,若a^b的结果超出计算机数据的存储范围,再去取模,结果显然不对,我们为了防止溢出,可以先分别对a取模, ...
- c语言的幂乘积表达式,POJ 1845 Sumdiv [素数分解 快速幂取模 二分求和等比数列]
大致题意: 求A^B的所有约数(即因子)之和,并对其取模 9901再输出. 解题基础: 1) 整数的唯一分解定理: 任意正整数都有且只有一种方式写出其素因子的乘积表达式. ,其中 为素数 2) 约数和 ...
- 10.24T3 解方程 取模意义下运算+秦九韶算法
#1228 解方程 描述 已知多项式方程: a0+a1x+a2x^2+..+anx^n=0 求这个方程在[1, m ] 内的整数解(n 和m 均为正整数) 输入 输入共n + 2 行. 第一行包含2 ...
- 7.使用php描述冒泡排序,PHP 数据结构 算法描述 冒泡排序 bubble sort
PHP 数据结构 算法描述 冒泡排序 bubble sort 复制代码 代码如下: /** * 冒泡排序 bubble sort * * 原理:多次循环进行比较,每次比较时将最大数移动到最上面.每次循 ...
- 算法—1,简单说说最常见的冒泡排序(Bubble Sort)
一,引入. 冒泡排序可以说是学习算法知识的时候入门的一个算法了,可是自从我当了面试官之后,来面试的人却连冒泡写不出来,实在让我大跌眼镜,恰好最近一段时间想再深入学习一下算法,就单开一个分类,算法,来讲 ...
- 【CodeForces - 485D】Maximum Value (枚举,用数组离散化,数学,取模运算,因子,筛法)
题干: You are given a sequence a consisting of n integers. Find the maximum possible value of (intege ...
- 【51Nod - 1103】N的倍数 (思维,鸽巢原理也叫抽屉定理,求倍数问题取模)
题干: 一个长度为N的数组A,从A中选出若干个数,使得这些数的和是N的倍数. 例如:N = 8,数组A包括:2 5 6 3 18 7 11 19,可以选2 6,因为2 + 6 = 8,是8的倍数. I ...
- python的取负运算_python 负数取模运算实例
举例: 340%60 = 40 ,怎么来的? 340 - 60*5 = 40 340 - (比340小的那个可以被60整除的正整数) =. 40 如果是负数: -340%60 = -340 - (比- ...
最新文章
- 再迎利好,BCH开发团队BU融合石墨烯区块传播技术
- 2.static关键字.rs
- c++ 虚继承与继承的差异
- C语言试题四之计算并输出3到n之间所有素数的平方根之和
- 材料二电子计算机及网络技术有限公司,高等职业教育计算机网络技术专业(三二分段)备案材料.doc...
- OJ1158: 又是排序(指针专题)(C语言)
- 如何扩容LVM逻辑卷
- java-数组排序--插入排序
- 什么是分布式微服务架构?-开课吧
- Scanner、String(java基础知识十二)
- spring 获取一个包下的所有bean_面试官问我:为什么 Spring 中的 bean 默认为单例?...
- 神秘邻居把我的信息卖给了诈骗团伙
- java标书_java软件项目投标技术标书.doc
- 黑白双轨棋·改编(定子棋,终盘换子,在计算赢子的多少)
- 解决 WIDOWS 2003 SERVER 玩不了3D游戏
- Centos系统mysql 忘记root用户的密码
- vsftpd 配置(中)
- 音视频直播如何实现低延迟
- 餐饮水单打印软件_火锅店连锁企业使用哪款生鲜管理系统软件比较好呢?
- 汽车电子行业常见工具方法汇总
热门文章
- 2019第十届蓝桥杯B组C++省赛E题迷宫--BFS(倒搜)
- 安装PaddleOCR遇到ERROR: Command errored out with exit status 1:command: ‘f:\python3.7\python.exe‘ -u -c
- bzoj 1800: [Ahoi2009]fly 飞行棋
- python中os.path.basename的使用
- [机器学习] 机器学习中所说的“线性模型”是个什么东西?
- python后台——aiohttp入门
- 安卓网络操作全解:发起请求,解析响应
- python - super 寻找继承关系
- 练习四十八:面向对象执行效率
- require() 源码解读