关闭

51NOD 1262 扔球(欧拉函数)

标签: 欧拉函数
569人阅读 评论(0) 收藏 举报
分类:

传送门
1262 扔球
基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 收藏 关注
在圆上一点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次,那起点S,每次反弹点,终点S共连接n+1条边,那么原问题变为从S走n+1条边回到S,设步长为a条边,gcd(a,n+1)==1时,lcm(a,n+1)=a*(n+1),由于a*(n+1)=(n+1)a那么最少走n+1次步长为a的路线才能重合到S;反之gcd(a,n+1)==d时,lcm(a,n+1)=a(n+1)/d,由于关系a*((n+1)/d)=(n+1)*(a/d),最少走(n+1)/d步即反弹(n+1)/d-1

#include <iostream>
#include <cstdio>
#include <cstdlib>
using namespace std;
typedef long long LL;
LL Eular(LL m)
{
    LL ans = m;
    for(LL i=2; i*i<=m; i++)
    {
        if(m%i==0)
        {
            ans -= ans/i;
            while(m%i==0)
            {
                m /= i;
            }
        }
    }
    if(m > 1)
        ans -= ans/m;
    return ans;
}
int main()
{
    LL m;
    while(cin>>m)
    {
        cout<<Eular(m+1)<<endl;
    }
    return 0;
}
0
0
查看评论

51nod 1262 扔球 (欧拉函数)

题意:在圆上一点出发,碰撞n次之后回到出发点,求有多少种方案。 思路:乍一看,觉得很难画图,仔细分析,题意就是把圆化成n+1个等分点,其他的点是不可能n次碰撞返回原点的。然后考虑这n+1个点 n+1,n,n-1,...5.4.3.2.1; (围成一个圈) 现在从n+1出发,每次可以选择跳几步,可以经...
  • xiangAccepted
  • xiangAccepted
  • 2017-11-24 12:26
  • 43

51Nod 1262 扔球

1262 扔球 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题  收藏  关注 在圆上一点S,扔出一个球,这个球经过若干次反弹还有可能回到S点。N = 4时,有4种扔法,如...
  • qq_35776409
  • qq_35776409
  • 2017-10-22 20:13
  • 109

51nod 1262 扔球

欧拉函数基础运用 #include using namespace std; int oula(int n) { int rea=n; for(int i=2; i*i<=n; i++) { if(n%i==0) { rea=rea-rea/i; while(n%...
  • xin_jun
  • xin_jun
  • 2016-12-07 23:18
  • 61

51nod-1262 扔球(欧拉函数)

原题链接 1262 扔球 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题  收藏  关注 在圆上一点S,扔出一个球,这个球经过若...
  • qq_26122039
  • qq_26122039
  • 2016-12-04 14:07
  • 109

51nod1262 扔球(欧拉函数)

题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1262
  • u013790563
  • u013790563
  • 2014-09-25 15:49
  • 603

51nod 1136 欧拉函数

对正整数n,欧拉函数是少于或等于n的数中与n互质的数的数目。此函数以其首名研究者欧拉命名,它又称为Euler's totient function、φ函数、欧拉商数等。例如:φ(8) = 4(Phi(8) = 4),因为1,3,5,7均和8互质。 Input 输入...
  • h1021456873
  • h1021456873
  • 2015-10-17 16:28
  • 556

一道关于扔球的DP问题

本博客简要的对一道DP问题(曾经也是一道面试题)提出了一些解决的思路。
  • aa793336532
  • aa793336532
  • 2017-05-29 10:11
  • 179

51nod 1279 扔盘子

题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1279 题目: 有一口井,井的高度为N,每隔1个单位它的宽度有变化。现在从井口往下面扔圆盘,如果圆盘的宽度大于井在某个高度的宽度,则圆盘被卡住(恰好等于的...
  • zchahaha
  • zchahaha
  • 2016-06-09 15:50
  • 616

2016-8-2 Unity学习笔记二(第一人称扔球)

以下学习内容根据 极客学院 所授内容学习并记录一、首先创建第一人称*1.在项目中引入包:Characters *2.然后将在FirstPersonCharactor中Prefabs里面的FPSController拖到Hierarchy中,这时候创建了一个第一人称视角的角色 二、创建小球*1.创建一个...
  • Dead_Rabbit6_0
  • Dead_Rabbit6_0
  • 2016-08-02 18:32
  • 552

【51Nod 1239】欧拉函数之和

Description对正整数n,欧拉函数是小于或等于n的数中与n互质的数的数目。此函数以其首名研究者欧拉命名,它又称为Euler’s totient function、φ函数、欧拉商数等。例如:φ(8) = 4(Phi(8) = 4),因为1,3,5,7均和8互质。 S(n) = Phi(1) ...
  • doyouseeman
  • doyouseeman
  • 2016-07-08 22:11
  • 764
    个人资料
    • 访问:529384次
    • 积分:11554
    • 等级:
    • 排名:第1585名
    • 原创:639篇
    • 转载:5篇
    • 译文:0篇
    • 评论:93条
    博客专栏