博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
51 Nod 1262 扔球
阅读量:5089 次
发布时间:2019-06-13

本文共 872 字,大约阅读时间需要 2 分钟。

                                 

在圆上一点S,扔出一个球,这个球经过若干次反弹还有可能回到S点。N = 4时,有4种扔法,如图:
 
恰好经过4次反弹回到起点S(从S到T1,以及反向,共4种)。
给出一个数N,求有多少种不同的扔法,使得球恰好经过N次反弹,回到原点,并且在第N次反弹之前,球从未经过S点。
Input
输入一个数N(1 <= N <= 10^9)。
Output
输出方案数量。
Input示例
4
Output示例
4 思路:球反弹n次回到原来的点 所以整个圆被分成 n+1 份    假设 球弹出时一次跨过 a 条边 也就是 a 份等弧    只有当 gcd(a,n+1)==1 时 球可以弹n次返回起点    证明并不会 好像画几个正多边形 这个规律 可以看出来    于是成了 求phi(n+1)
1 #include 
2 #include
3 4 int phi(int n) { 5 int Ans=n; 6 for(int i=2; i*i<=n; ++i) { 7 if(n%i==0) { 8 Ans-=Ans/i; 9 while(!(n%i)) n/=i;10 }11 }12 if(n>1) Ans-=Ans/n;13 return Ans;14 }15 16 int hh() {17 int n;18 scanf("%d",&n); 19 20 printf("%d\n",phi(n+1)); 21 return 0;22 }23 24 int sb=hh();25 int main(int argc,char**argv) {;}
代码

 

 

转载于:https://www.cnblogs.com/whistle13326/p/7711986.html

你可能感兴趣的文章
浴谷金秋线上集训营 T11738 伪神(树链剖分)
查看>>
javascript基础01
查看>>
iOS开发个人独立博客收集
查看>>
JSONArray和JSONObject的简单使用
查看>>
北京大片《全球热死》正在上映!
查看>>
多进程复习
查看>>
Centos 安装golang beego
查看>>
JavaScript内置对象 以及和 内置对象相关的语法
查看>>
framespacing="10"和border="10"在frameSet中有什么区别?
查看>>
JavaScript中的字符串连接
查看>>
函数定义的三种方式
查看>>
【Java设计模式】java单例模式
查看>>
[HNOI2007]分裂游戏
查看>>
iframe标签用法详解
查看>>
Ubuntu下第一个C程序的成功运行
查看>>
一、架构设计的内容
查看>>
转:Spring-session & redis 子域名共享session
查看>>
11.推送到远程仓库
查看>>
poj3614 Sunscreen(贪心+STL)
查看>>
webNav
查看>>