题目连接:http://acm.csust.edu.cn/problem/4056
博客园食用链接: https://www.cnblogs.com/lonely-wind-/p/13941868.html

Description

藤原书记家养了一只金毛的佩斯,佩斯有着能和白银匹敌的智商,并且非常喜欢数学和编程。

这天佩斯在外面玩耍的时候碰到了一圈石头, 总共有 nnn 个 ,它把这 nnn 个石头从 000 到 n−1n - 1n−1 顺时针编号,现在佩斯处于第 000 号石头上,佩斯会在石头上顺时针跳跃,并且每次跳的距离固定为 kkk ,假设佩斯当前的位置的石头编号为 pospospos ,那么它下一块所处的石头编号为 (pos+k)%n(pos + k) \% n(pos+k)%n。比如当 n=12,k=4n = 12, k = 4n=12,k=4 时,佩斯所处石头的编号按跳跃顺序则是 0,4,8,0,4....0, 4, 8, 0, 4....0,4,8,0,4.... ,它会无穷无尽一直跳下去。佩斯记录下了它从开始游戏后经过的所有石头的编号集合(不含重复编号),但一不小心忘记了编号原本的出现顺序。它想请你计算出有多少个符合条件的 kkk 能使得它最终经过的编号集合与所记录的吻合。

注:编号集合中不含重复元素,只要两个编号集合内的元素相同(不考虑顺序),即说明二者吻合。

input

第一行输入n,mn,mn,m,满足2≤m≤n≤1000002≤m≤n≤1000002≤m≤n≤100000,

第二行mmm个整数,代表得到的石头编号,满足第 iii 个整数 0≤ai≤n−1,ai≥ai−10≤a_i≤n-1,a_i≥a_{i-1}0≤ai​≤n−1,ai​≥ai−1​。

output

输出一个整数,代表有多少个符合条件的 kkk 能使得它最终经过的编号集合与所记录的吻合。

题目保证有解。

Sample Input 1
5 5
0 1 2 3 4
Sample Output 1
4

Sample Input 2
6 3
0 2 4
Sample Output 2
2

emmm,这是一个环,那么对于每一个长度1−(n−1)1-(n-1)1−(n−1)我们肯定能够找到其循环节,并求出其循环节的长度,那么这个循环节的长度实际上就是最终能够构成的序列的长度。于是就可以筛出一大部分的答案了,那么对于有些数可能有相同的循环节长度,但其序列可能不同,所以我们只要将给定的序列打上标记,对这些已经筛出来的数xxx,判断是否有vis[x]vis[x]vis[x]存在,如果有,那么就说明了这个循环节上有这个数,那么其循环节就固定了。

至于循环节的长度,我们直接求一个最小公倍数lcm就可以了,lcm(a,b)=a/gcd(a,b)∗blcm(a,b)=a/gcd(a,b)*blcm(a,b)=a/gcd(a,b)∗b

以下是AC代码:

#include <bits/stdc++.h>
using namespace std;typedef long long ll;
const int mac=1e5+10;int vis[mac];int main(int argc, char const *argv[])
{int n,m;scanf ("%d%d",&n,&m);for (int i=1; i<=m; i++){int x;scanf ("%d",&x); vis[x]=1;}int ans=0;for (int i=1; i<n; i++){ll lcm=1ll*n/__gcd(i,n)*i;if (lcm/i==m && vis[i]) ans++;}printf("%d\n",ans);return 0;
}

CSUSTOJ-藤原书记的佩斯(简单数学)相关推荐

  1. CSUSTOJ-藤原书记想要探病(简单矩阵快速幂)

    题目连接:http://acm.csust.edu.cn/problem/4044 博客园食用链接: https://www.cnblogs.com/lonely-wind-/p/13941879.h ...

  2. [画风突变] 藤原千花专属相册,C语言制作书记专属电子相册!

    前言 一款自己制作的电子相册不仅富有创意,而且能够最大可能的满足己需,今天小编带着大家制作的就是藤原千花的电子相册.要是你愿意,你也可以把你和你对象的点滴放进去哦,弄点爱情宣言什么的都是没什么问题. ...

  3. python 最小二乘回归 高斯核_从简单数学建模开始:08最小二乘准则的应用(附python代码)...

    模型拟合一般来说有这么三种: 切比雪夫近似准则 极小化绝对偏差之和 最小二乘准则 这几个原则各有各的适用范围.其中最小二乘准则是比较容易计算的.接下来我将简要的介绍最小二乘准则以及举例说明如何用pyt ...

  4. 洛谷试炼场-简单数学问题-二分查找

    洛谷试炼场-简单数学问题 P1147 连续自然数和 题解: 本题给定一个数n,求连续自然数的和为n,用一个前缀数组,low_bound,upper_bound,查找是否是同一个数.O(nlog(n)) ...

  5. 龙族幻想最新东京机器人位置_龙族幻想藤原智坐标位置一览 藤原智任务攻略...

    龙族幻想v1.3.148安卓版 类型:角色扮演大小:1.39G语言:中文 评分:5.0 标签: 立即下载 龙族幻想藤原智在哪?这是苍穹之下异闻,需要找到npc藤原智,许多玩家都不清楚在什么位置,如何完 ...

  6. The annotation of C++ primer {藤原豆腐坊自家用}

    The annotation of <<C++ primer>> {藤原豆腐坊自家用} 给变量名一个初始值几乎总是正确的. 但不要求必须这么做 C++的主要设计目的之一就是允许 ...

  7. 【简单数学】末日的传说

    [简单数学]末日的传说 题目 题目描述 只要是参加jsoi活动的同学一定都听说过Hanoi塔的传说:三根柱子上的金片每天被移动一次,当所有的金片都被移完之后,世界末日也就随之降临了. 在古老东方的幻想 ...

  8. 【简单数学】【NOIP 20008】笨小猴

    [简单数学][NOIP 20008]笨小猴 问题描述: 笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼.但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大! 这种方法 ...

  9. 经济金融领域简单数学建模和分析:MATLAB成本曲线方程和销售收入直线方程

    经济金融领域简单数学建模和分析:MATLAB成本曲线方程和销售收入直线方程 MATLAB代码: x=[0:0.1:5]; y=9*x; plot(x,y,'r','LineWidth',0.5) ho ...

最新文章

  1. Tutorial——使用Maven开发Cloud Driver
  2. iphone 字符串
  3. PERL 语言中的q,qw,qr,qx,qq......符号用法总结
  4. 【PC工具】解放双手:分享京东双十一任务脚本,双十一京东全民养红包活动自动脚本分享...
  5. nginx做负载均衡,解决多机器多gpu卡服务对外暴露一个接口问题
  6. C#LeetCode刷题之#849-到最近的人的最大距离(Maximize Distance to Closest Person)
  7. css让子元素展示成一行,封面模板循环子栏目一行两列DIV+CSS成功实现
  8. 日访问量1万mysql_日访问量1万服务器
  9. amplify color_如何使用Amplify监视Nginx
  10. ping命令两种返回信息的区别
  11. 旅游后台管理系列——使用maven tomcat插件启动web工程
  12. GD32F103基础教程—注意事项(三)
  13. 咪咕音乐HTML代码,python3爬取咪咕音乐榜信息(附源代码)
  14. win系统分区表丢失后如何恢复
  15. 【数据】社区发现数据集
  16. Unity使用反射探头实现地面的镜面反射
  17. 我与程序员不得不说的二三事——一天一天
  18. 电脑每次启动都硬盘自检
  19. python跳一跳脚本详解_微信跳一跳游戏 python脚本辅助得高分
  20. cookie、sessionStorage、localstorage作用范围

热门文章

  1. 酒店应用爆发式增长,“API即服务”已成趋势!
  2. 我的团长我的团+亮剑+士兵突击
  3. 【Mixly】RC522的RFID门禁
  4. JAVA学习第十一章——面向对象进阶
  5. K8S中service与controller(控制器)通过标签选择器(selector)匹配pod
  6. logism自动化测试
  7. 学习:软件需求说明书(转)
  8. 【虚幻引擎】UE4 Windows下打包Linux版本的包
  9. 有没有必要经常向领导汇报工作?
  10. 58到家入驻微信钱包的技术优化