Console-算法[for,if,break]-五个好朋友分苹果

简介:
ylbtech-Arithmetic:Console-算法[for,if,break]-五个好朋友分苹果
 
1.A,案例
-- ========================================================
-- ylb:算法
-- Type:算法[for,if,break]
-- munu:五个好朋友分苹果
-- thankyou:sunshine
-- 13:02 2012/3/17
-- ========================================================    
 
      五个好朋友分一堆苹果,第一个人把苹果分成5份,为了公平,扔掉了多余的1个苹果,拿上自己一份走了。第二人来了,把剩余的苹果分成5份,扔掉多余的1个,拿上自己一份走了。以后来的三个人都是这样做的。那么,最初有多少个苹果呢?
 
分析:
    根据分苹果的方法我们可以看出,每个人分苹果时都是扔掉1个后变成了5的整数倍,所以才能分成5份。那么当这个人拿去一份后,剩余的是4份苹果,所以剩余的数一定是4的整数倍。所以,每个人所看到的数目一定是减1后,既是5的整数倍,又是4的整数倍。因此可构建为:1+4+5+X(X为未知的正整数或0)。
    设m为第i个人所看到的苹果数,n代表第i-1个人所看的到苹果数,那么这两个数字应该满足这样的关系:m=(n-1)/5*4
    例如当i=2时,代表第2个人所看到的苹果数=(第一个人看到的苹果数减去1个,再分成5份,因为第一个人拿走1份,所以乘以4份)。所以,这个表达式成立。
    因此m和n都应该满足1+4*5*X这个表达式。这是一个二重循环,外循环不能确定执行多少次,只好总最小数21开始试算。内循环判断苹果数是否能被5整除,如果不能被整除则退出内循环,外循环的苹果数直接加20。因为20是满足既能被5整除,又能被4整除的最小数。
   从1开始的原因1是最小的满足1=1+4*5*X的正整数(当X为0时)。
1.B,解决方案
复制代码
using System;

namespace ConsoleApplication1
{
    class Program
    {
        /// <summary>
        /// ylb:五个好朋友分苹果
        /// 12:56 2012/3/17
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
            int i, m, n = 1;
            for (; ; )
            {
                n = n + 4 * 5;
                m = n;
                for (i = 0; i < 5; i++)
                {
                    if ((m - 1) % 5 != 0)
                        break;
                    else
                        m = (m - 1) / 5 * 4;
                }
                if (i == 5)
                    break;
            }
            Console.WriteLine(string.Format("原来有{0}个苹果!",n));
        }
    }
}
复制代码
1.C,运行结果
原来有3121个苹果!
请按任意键继续. . .


本文转自ylbtech博客园博客,原文链接:http://www.cnblogs.com/ylbtech/archive/2013/02/22/2921875.html,如需转载请自行联系原作者
相关文章
|
算法 Java C++
【洛谷算法题】P5709-Apples Prologue / 苹果和虫子【入门2分支结构】
【洛谷算法题】P5709-Apples Prologue / 苹果和虫子【入门2分支结构】
|
算法 Java
【洛谷算法题】P5703-苹果采购【入门1顺序结构】
【洛谷算法题】P5703-苹果采购【入门1顺序结构】
|
算法 C语言
12【C语言 & 趣味算法】存钱问题(四层for循环,if判断)
12【C语言 & 趣味算法】存钱问题(四层for循环,if判断)
12【C语言 & 趣味算法】存钱问题(四层for循环,if判断)
|
机器学习/深度学习 存储 传感器
【图像检测】基于最近邻算法实现苹果病害识别附matlab代码
【图像检测】基于最近邻算法实现苹果病害识别附matlab代码
|
Web App开发 Rust 算法
苹果 iPhone 14 或将取消刘海;算法推荐管理规定已施行;GitLab 14.8 发布 | 思否周刊
苹果 iPhone 14 或将取消刘海;算法推荐管理规定已施行;GitLab 14.8 发布 | 思否周刊
182 0
|
算法
HP 算法题:有多少苹果用来分赃1.1
HP 算法题:有多少苹果用来分赃1.1
127 0
|
人工智能 算法
[leetcode/lintcode 题解] 算法面试真题详解:捡苹果
[leetcode/lintcode 题解] 算法面试真题详解:捡苹果
[leetcode/lintcode 题解] 算法面试真题详解:捡苹果
|
存储 算法 程序员
算法笔试模拟题精解之“苹果收获程序”
因为每次下落时,苹果树每一层的节点都会往下掉一层。由此可以想到,如果苹果树某一层的节点的数目为奇数时,这一层的节点的苹果掉落到第一层时,由于一个节点只能存储一个二进制位的原因,只会剩下一个苹果。而如果苹果树某一层的节点数目为偶数,这一层的节点的苹果掉落到第一层时,剩下的苹果数目为0。
算法笔试模拟题精解之“苹果收获程序”

热门文章

最新文章