点我看题目

题意 : 冒泡排序的原理众所周知,需要扫描很多遍。而现在是求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(乘方取模)相关推荐

  1. 乘方取模计算(模幂计算)

    乘方取模计算也称为模幂计算,在密码系统中经常使用,是不可缺少的. 使用本程序可以解HDU2035,只需要考虑输入和输出. /** 乘方取模** 已知给定的正整数a.n和m,计算x的值,a^n = x ...

  2. 【算法编程】乘方取模

    须知: 编程题中有时会出现大数的乘方取模,此时我们不能使用简单的pow函数. 例如(a^b)%m,若a^b的结果超出计算机数据的存储范围,再去取模,结果显然不对,我们为了防止溢出,可以先分别对a取模, ...

  3. c语言的幂乘积表达式,POJ 1845 Sumdiv [素数分解 快速幂取模 二分求和等比数列]

    大致题意: 求A^B的所有约数(即因子)之和,并对其取模 9901再输出. 解题基础: 1) 整数的唯一分解定理: 任意正整数都有且只有一种方式写出其素因子的乘积表达式. ,其中 为素数 2) 约数和 ...

  4. 10.24T3 解方程 取模意义下运算+秦九韶算法

    #1228 解方程 描述 已知多项式方程: a0+a1x+a2x^2+..+anx^n=0 求这个方程在[1, m ] 内的整数解(n 和m 均为正整数) 输入 输入共n + 2 行. 第一行包含2 ...

  5. 7.使用php描述冒泡排序,PHP 数据结构 算法描述 冒泡排序 bubble sort

    PHP 数据结构 算法描述 冒泡排序 bubble sort 复制代码 代码如下: /** * 冒泡排序 bubble sort * * 原理:多次循环进行比较,每次比较时将最大数移动到最上面.每次循 ...

  6. 算法—1,简单说说最常见的冒泡排序(Bubble Sort)

    一,引入. 冒泡排序可以说是学习算法知识的时候入门的一个算法了,可是自从我当了面试官之后,来面试的人却连冒泡写不出来,实在让我大跌眼镜,恰好最近一段时间想再深入学习一下算法,就单开一个分类,算法,来讲 ...

  7. 【CodeForces - 485D】Maximum Value (枚举,用数组离散化,数学,取模运算,因子,筛法)

    题干: You are given a sequence a consisting of n integers. Find the maximum possible value of  (intege ...

  8. 【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 ...

  9. python的取负运算_python 负数取模运算实例

    举例: 340%60 = 40 ,怎么来的? 340 - 60*5 = 40 340 - (比340小的那个可以被60整除的正整数) =. 40 如果是负数: -340%60 = -340 - (比- ...

最新文章

  1. 再迎利好,BCH开发团队BU融合石墨烯区块传播技术
  2. 2.static关键字.rs
  3. c++ 虚继承与继承的差异
  4. C语言试题四之计算并输出3到n之间所有素数的平方根之和
  5. 材料二电子计算机及网络技术有限公司,高等职业教育计算机网络技术专业(三二分段)备案材料.doc...
  6. OJ1158: 又是排序(指针专题)(C语言)
  7. 如何扩容LVM逻辑卷
  8. java-数组排序--插入排序
  9. 什么是分布式微服务架构?-开课吧
  10. Scanner、String(java基础知识十二)
  11. spring 获取一个包下的所有bean_面试官问我:为什么 Spring 中的 bean 默认为单例?...
  12. 神秘邻居把我的信息卖给了诈骗团伙
  13. java标书_java软件项目投标技术标书.doc
  14. 黑白双轨棋·改编(定子棋,终盘换子,在计算赢子的多少)
  15. 解决 WIDOWS 2003 SERVER 玩不了3D游戏
  16. Centos系统mysql 忘记root用户的密码
  17. vsftpd 配置(中)
  18. 音视频直播如何实现低延迟
  19. 餐饮水单打印软件_火锅店连锁企业使用哪款生鲜管理系统软件比较好呢?
  20. 汽车电子行业常见工具方法汇总

热门文章

  1. 2019第十届蓝桥杯B组C++省赛E题迷宫--BFS(倒搜)
  2. 安装PaddleOCR遇到ERROR: Command errored out with exit status 1:command: ‘f:\python3.7\python.exe‘ -u -c
  3. bzoj 1800: [Ahoi2009]fly 飞行棋
  4. python中os.path.basename的使用
  5. [机器学习] 机器学习中所说的“线性模型”是个什么东西?
  6. python后台——aiohttp入门
  7. 安卓网络操作全解:发起请求,解析响应
  8. python - super 寻找继承关系
  9. 练习四十八:面向对象执行效率
  10. require() 源码解读