题目链接

题意 : 给出 N 个糖果、老师按顺序给 1~N 编号的学生分配糖果、每个学生要么不分、要么最少分一个、且由于是按顺序发放、那么对于某个有分到糖果的编号为 i 的学生、则 1~(i-1) 这些学生都最少有一个糖果、老师必须分完 N 个糖果、问你最后不同的分配方式有多少种

分析 :

队友根据组合计数的方法推出了答案是 2^(N-1)

你也可以通过打表的方式来找到这个规律

但是这里 N 很大、不能直接进行快速幂运算

需要进行降幂处理

有一个男人、他叫欧拉

提出了一个降幂公式

a^n mod c = a^( n % φ(c) + φ(c) ) mod c

条件是 n ≥ φ(c)

注 : φ(n) 是欧拉函数的意思、代表从 1 ~ n 与 n 互质的数的个数

当 n 为质数的时候 φ(n) = n-1

所以只要在输入的时候、将指数适当进行模运算处理、就可以通过快速幂通过此题

  1. #include<bits/stdc++.h>
  2. #define LL long long
  3. #define ULL unsigned long long
  4.  
  5. #define scl(i) scanf("%lld", &i)
  6. #define scll(i, j) scanf("%lld %lld", &i, &j)
  7. #define sclll(i, j, k) scanf("%lld %lld %lld", &i, &j, &k)
  8. #define scllll(i, j, k, l) scanf("%lld %lld %lld %lld", &i, &j, &k, &l)
  9.  
  10. #define scs(i) scanf("%s", i)
  11. #define sci(i) scanf("%d", &i)
  12. #define scd(i) scanf("%lf", &i)
  13. #define scIl(i) scanf("%I64d", &i)
  14. #define scii(i, j) scanf("%d %d", &i, &j)
  15. #define scdd(i, j) scanf("%lf %lf", &i, &j)
  16. #define scIll(i, j) scanf("%I64d %I64d", &i, &j)
  17. #define sciii(i, j, k) scanf("%d %d %d", &i, &j, &k)
  18. #define scddd(i, j, k) scanf("%lf %lf %lf", &i, &j, &k)
  19. #define scIlll(i, j, k) scanf("%I64d %I64d %I64d", &i, &j, &k)
  20. #define sciiii(i, j, k, l) scanf("%d %d %d %d", &i, &j, &k, &l)
  21. #define scdddd(i, j, k, l) scanf("%lf %lf %lf %lf", &i, &j, &k, &l)
  22. #define scIllll(i, j, k, l) scanf("%I64d %I64d %I64d %I64d", &i, &j, &k, &l)
  23.  
  24. #define lson l, m, rt<<1
  25. #define rson m+1, r, rt<<1|1
  26. #define lowbit(i) (i & (-i))
  27. #define mem(i, j) memset(i, j, sizeof(i))
  28.  
  29. #define fir first
  30. #define sec second
  31. #define VI vector<int>
  32. #define ins(i) insert(i)
  33. #define pb(i) push_back(i)
  34. #define pii pair<int, int>
  35. #define VL vector<long long>
  36. #define mk(i, j) make_pair(i, j)
  37. #define all(i) i.begin(), i.end()
  38. #define pll pair<long long, long long>
  39.  
  40. #define _TIME 0
  41. #define _INPUT 0
  42. #define _OUTPUT 0
  43. clock_t START, END;
  44. void __stTIME();
  45. void __enTIME();
  46. void __IOPUT();
  47. using namespace std;
  48. ;
  49. ;
  50. char str[maxn];
  51.  
  52. LL pow_mod(LL a, LL b)
  53. {
  54. a %= mod;
  55. LL ret = 1LL;
  56. while(b){
  57. ) ret = ret * a % mod;
  58. a = a * a % mod;
  59. b >>= ;
  60. }return ret;
  61. }
  62.  
  63. int main(void){__stTIME();__IOPUT();
  64.  
  65. int nCase;
  66. sci(nCase);
  67.  
  68. while(nCase--){
  69. scs(str);
  70. int len = strlen(str);
  71.  
  72. LL Index = ;
  73. ; i<len; i++)
  74. Index = ((Index * ) + (str[i]-);
  75.  
  76. printf( < ? : Index-));
  77. }
  78.  
  79. __enTIME();;}
  80.  
  81. void __stTIME()
  82. {
  83. #if _TIME
  84. START = clock();
  85. #endif
  86. }
  87.  
  88. void __enTIME()
  89. {
  90. #if _TIME
  91. END = clock();
  92. cerr<<"execute time = "<<(double)(END-START)/CLOCKS_PER_SEC<<endl;
  93. #endif
  94. }
  95.  
  96. void __IOPUT()
  97. {
  98. #if _INPUT
  99. freopen("in.txt", "r", stdin);
  100. #endif
  101. #if _OUTPUT
  102. freopen("out.txt", "w", stdout);
  103. #endif
  104. }

2018 焦作网络赛 G Give Candies ( 欧拉降幂 )的更多相关文章

  1. ACM-ICPC 2018 焦作网络赛

    题目顺序:A F G H I K L 做题链接 A. Magic Mirror 题意:判断 给出的 字符串 是否等于"jessie",需要判断大小写 题解:1.用stl库 tolo ...

  2. 牛客OI测试赛 F 子序列 组合数学 欧拉降幂公式模板

    链接:https://www.nowcoder.com/acm/contest/181/F来源:牛客网 题目描述 给出一个长度为n的序列,你需要计算出所有长度为k的子序列中,除最大最小数之外所有数的乘 ...

  3. 【2018 ICPC焦作网络赛 G】Give Candies(费马小定理+快速幂取模)

    There are N children in kindergarten. Miss Li bought them N candies. To make the process more intere ...

  4. 2018焦作网络赛Give Candies

    一开始忽略了欧拉定理指数部分是modphi(n-1)没有memset,减法后面没加0:

  5. 2018焦作网络赛Mathematical Curse

    题意:开始有个数k,有个数组和几个运算符.遍历数组的过程中花费一个运算符和数组当前元素运算.运算符必须按顺序花费,并且最后要花费完.问得到最大结果. 用maxv[x][y]记录到第x个元素,用完了第y ...

  6. 2018青岛网络赛G - Couleur 区间上的启发式合并

    题意:给出\(a[1...n]\),共\(n\)次操作,每次删除一个位置\(p_i\)(强制在线),此时区间会变为两个分离的区间,求每次操作的最大区间逆序对 首先要知道必要的工具,按权值建立的主席树可 ...

  7. 2018焦作网络赛 - Poor God Water 一道水题的教训

    本题算是签到题,但由于赛中花费了过多的时间去滴吧格,造成了不必要的浪费以及智商掉线,所以有必要记录一下坑点 题意:方格从1到n,每一格mjl可以选择吃鱼/巧克力/鸡腿,求走到n格时满足 1.每三格不可 ...

  8. 2018 焦作网络赛 K Transport Ship ( 二进制优化 01 背包 )

    题目链接 题意 : 给出若干个物品的数量和单个的重量.问你能不能刚好组成总重 S 分析 : 由于物品过多.想到二进制优化 其实这篇博客就是存个二进制优化的写法 关于二进制优化的详情.百度一下有更多资料 ...

  9. 2018 焦作网络赛 L Poor God Water ( AC自动机构造矩阵、BM求线性递推、手动构造矩阵、矩阵快速幂 )

    题目链接 题意 : 实际上可以转化一下题意 要求求出用三个不同元素的字符集例如 { 'A' .'B' .'C' } 构造出长度为 n 且不包含 AAA.BBB CCC.ACB BCA.CAC CBC ...

随机推荐

  1. readlink、find-exec参数、file命令

    一.readlink:查看符号链接文件的内容 语法       readlink [选项] ...文件... 描述       打印符号链接或规范文件名的值 -f,--canonicalize     ...

  2. phpexcel 生成大于26列数据

    function excelExport2($fileName = '', $headArr = [], $data = [], $widths=[]) { ob_clean(); // $fileN ...

  3. MySQL中的DML、DQL和子查询

    一.MySQL中的DML语句 1.使用insert插入数据记录: INSERT INTO `myschool`.`student` (`studentNo`, `loginPwd`, `student ...

  4. Java深入分析类与对象

    深入分析类与对象 1,成员属性封装 在类之中的组成就是属性与方法,一般而言方法都是对外提供服务的,所以是不会进行封装处理的,而对于属性需要较高的安全性,所以往往需要对其进行保护,这个时候就需要采用封装 ...

  5. asp.net 12 AJAX

    Javascript:ajax Ajax:get <%@ Page Language="C#" AutoEventWireup="true" CodeBe ...

  6. 弹窗插件 layer

    官方网站 http://layer.layui.com/ Github 地址 https://github.com/sentsin/layer //在这里面输入任何合法的js语句 layer.open ...

  7. 对接外网post,get接口封装类库

    public class HttpHelper { public static string GetAsync(string url)  { HttpWebRequest request = WebR ...

  8. JS基础_嵌套的for循环

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  9. JS基础_while的练习2

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  10. eclipse中ctrl+1什么意思

    eclipse中ctrl+1是一个快捷键,能快速的现实光标所在行的问题,并给出一些修改方案. 当eclipse编辑器在你编辑代码阶段,能检测到编辑时异常(错误)会在错误代码行前面出现一个红色的叉叉,这 ...