zoukankan      html  css  js  c++  java
  • UVA-10726 Coco Monkey(递推)

    题目大意:n个人,m个猴子分桃,第一个人把桃子分成n份余下m个,第一个人将余下的给猴子,拿走自己的那份。第二个人把剩下的桃子也分成n份,余下m个,将余下的分给猴子,拿走自己的那份。………… 直到n个人如此做完之后,剩下的桃子数正好是能被n个人平分。求在区间[l,r]中,有几个值可能是原来的桃子数。

    题目解析:最后剩下的桃子数一定是n*(n-1)的倍数,枚举即可。

    代码如下:

    # include<iostream>

    # include<cstdio>

    # include<cstring>

    using namespace std;

    double f(int u,int s,int m)

    {

      double uu=(double)u;

      for(int i=1;i<=s;++i){

        uu=uu*s/(s-1)+m;

      }

      return uu;

    }

    bool is(double n)

    {

      int a=(int)n;

      return n==(double)a;

    }

    int main()

    {

      int i,s,m,a,b,T,cas=0;

      scanf("%d",&T);

      while(T--)

      {

        scanf("%d%d%d%d",&s,&m,&a,&b);

        printf("Case %d: ",++cas);

        int u=s*(s-1);

        int ans=0;

        for(i=1;;++i){

          double uu=f(i*u,s,m);

          if(uu>=a&&uu<=b&&is(uu))

            ++ans;

          if(uu>b)

            break;

         }

        printf("%d ",ans);

      }

      return 0;

    }

  • 相关阅读:
    设计模式-创建型-原型模式
    设计模式-创建型-抽象工厂模式
    设计模式-创建型-工厂模式
    设计模式-创建型-单例模式
    css3技巧属性之text-overflow
    bootstrap如何自定义5等分
    LeetCode-64-最小路径和
    LeetCode-62-不同路径
    LeetCode-5-最长回文子串
    LeetCode-98-验证二叉搜索树
  • 原文地址:https://www.cnblogs.com/20143605--pcx/p/4672577.html
Copyright © 2011-2022 走看看