日期:2014-05-18  浏览次数:20817 次

请教一个简单的提成问题
一个很简单的提成题目,投入钱10元起计,提成为10%,提成大于1元则继续投入,继续提成10%,直至提成小于1为止,假设现在已知需要达成的目标利润,那计算最小投入多少?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace tuiguangyuan
{
  class Program
  {
  static void Main(string[] args)
  {
  double lrsum,tc;//设定利润总和lrsum,提成tc
  int mblr,money;//设定目标利润和投入
  lrsum = 0;  
  Console.WriteLine("请输入你的目标利润:");
  mblr = int.Parse(Console.ReadLine());//需要达成的目标利润
  money = 10;//投入10元起

  while (lrsum < mblr)
  {
  tc = money * 0.1;
  lrsum = tc;
  while (tc > 1)
  {
  tc = tc * 0.1;
  lrsum += tc;
  }
  money++;
  }
   
  Console.WriteLine("你输入的目标利润是:{0}", mblr);
  Console.WriteLine("预期需要的钱是:{0}", money);
  Console.ReadKey( );
  }
  }
}

问题出来了,假定我需要达成100元利润,实际投入901就能达成了,可现在计算出来是902,
除了把 Console.WriteLine("预期需要的钱是:{0}", money);
换成 Console.WriteLine("预期需要的钱是:{0}", money-1)的方法外,可以不可以让这个money不用减1,直接达成要求呢?希望能帮我解惑!

------解决方案--------------------
while (true)
{
tc = money * 0.1;
lrsum = tc;
while (tc > 1)
{
tc = tc * 0.1;
lrsum += tc;
}
if(lrsum < mblr)
money++;
else
break;
}