黑马程序员技术交流社区

标题: 一道小题,大家有简单方法没 [打印本页]

作者: 风雪再现    时间: 2013-7-5 18:08
标题: 一道小题,大家有简单方法没
本帖最后由 风雪再现 于 2013-7-5 18:10 编辑

小明的妈妈每天会给他20元零花钱,小明每天花一半存一半,每过7天小明又会把所有存款花掉一半,请编程计算小明需要多少天才能存够100元?
int sum = 0;
            for (int i = 1; ; i++)
            {
                if (sum < 100)
                {
                    if (i % 7 == 0)
                    {
                        sum = sum / 2;
                    }
                    else
                    {
                        sum += 10;
                    }
                }
                else
                {
                    Console.WriteLine("需要{0}天,小明能够存够100",i);
                    break;
                }
            }

不好意思,发重了,网速太慢,以为没有发上去呢

作者: 逆_水_寒    时间: 2013-7-5 21:04
int j = 0;
            int k = 0;
            for (int i = 0; i < 100; i+=20)
            {

                i = i - 10;
                j++;
                k++;
                if (j == 7)
                {
                    i = i / 2;
                    j = 0;
                }

            }

            Console.WriteLine(k);
            Console.ReadKey();


不知道可是等于13,差距可能有一天吧。
作者: baoshouying    时间: 2013-7-6 00:28
有个疑问 每到一个第七天 小明是先收钱呢?还是先花钱呢?
如果 是先收钱的话我是这么写的:

            int i = 0;
            double sum = 0;
            while (true)
            {

                if (sum >= 100)
                {
                    break;
                }
                sum += 10;
                if (i % 7 == 0 && i >= 6)
                {
                    sum /= 2;
                }
                i++;
            }
            Console.WriteLine(i);
            Console.ReadLine();
作者: ﹏Lifeヽ    时间: 2013-7-6 10:47
我也来贴一个:
如题: int day = 0 ;
            int monney = 0;
            while (monney < 100)
            {
                for (int i = 1;i<=7;i++)
                {
                    if (monney < 100)
                    {
                        day++;
                        monney += 10;
                    }
     
                }
                if (monney >= 100)
                {
                    break;
                }
                monney = monney / 2;

               
            }
            Console.WriteLine(day);
            Console.ReadKey();
作者: 许大虾    时间: 2013-7-6 13:53
那么麻烦做什么 - -   看看这样~{:soso_e120:}
int i = 20;
            int day = 7;
            double sum = 0;
            sum = 100 / (((i / 2 * day) / 2) / 7);
            Console.WriteLine("小明需要{0}天才能存够100元", sum);
            Console.ReadKey();
作者: XXL    时间: 2013-7-7 03:19
假定小明需要存够的钱数为int money,那么他一个星期最多存80,除去最后那不超过7天的日子,之前他每周最多存35,
那么他至少要乖乖攒35攒int weeks=(money-80-1)/35+1 周,即求大于等于(money-80)/35的最小的整数
在这几周内他攒了weeks*35块钱,那么他还得攒(money-weeks*35)元钱,除去最后一天能攒20,
其中他攒了int days=(money-20-weeks*35-1)/10+1天,即求大于等于(money-20-weeks*35)/10的最小的整数.
最后的天数总和为int i=weeks*7+days+1.

int weeks=(money-80-1)/35+1;
int days=(money-20-weeks*35-1)/10+1
int i=weeks*7+days+1;
Console.WriteLine("需要{0}天,小明能够存够"+money.Tosting(),i);

将money=100代入得到13
作者: .netNo1    时间: 2013-7-8 16:18
int sum=20;
                        int day = 0;
                        while (sum <= 100)
                        {
                                if (day == 7)
                                        sum = sum / 2;

                                sum += 10;
                                day++;
                        }
                        Console.WriteLine(day);
                        Console.ReadKey();




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2