注册 登录
编程论坛 新人交流区

我有个问题请教大家,谢谢

飞扬lome 发布于 2007-10-01 20:38, 304 次点击

有一定数量的西瓜,第一天卖了一半加半个,第二天卖了剩下的西瓜的一半再加半个,第三天卖了剩下的西瓜的一半再加半个。三天所有的西瓜卖完。请问有几个西瓜。

我是这么做的对吗?
using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int a = 0;
int b = Sum1();
int c = Sum2();
do
{
a++;
} while (a ==a / c + b / c);
System.Console.WriteLine("{0}", b);
System.Console.ReadKey();
}
static int Sum1()
{
int sum=0 ;
for (int i = 1; i <= 4; i++)
{
sum =(int)sum+ 2 ^ i - 1;
}
return (int)sum;
}
static int Sum2()
{
int sum = 0;
for (int i = 1; i <= 4; i++)
{
sum =(int)sum+ 2 ^ i;
}
return (int)sum;
}

}
}

3 回复
#2
nuciewth2007-10-01 21:04
第一天卖了一半加半个,第二天卖了剩下的西瓜的一半再加半个,第三天卖了剩下的西瓜的一半再加半个

和那个卖桃子的一样.
我不懂你的编程语言,但你的做法有点麻烦.

你可以假设原本为n个.
第一天卖 (n/2+1/2)=(n+1)/2 剩下n-(n+1)/2=(n-1)/2
第二天卖 (n-1)/4+1/2=(n+1)/4 剩下 (n-3)/4
第三天卖 (n-3)/8+1/2=(n+1)/8 剩下 (n-7)/8 =0

你看很明显 n=7;

所以应该是这样做.
n=0;
for(i=1;i<=3;i++)
{
n=2*n+1;
}
#3
huochai20082007-10-02 00:02
#4
飞扬lome2007-10-02 21:56
回复:(nuciewth)第一天卖了一半加半个,第二天卖了...

谢谢!

1