编程实现求出若干个整数之和为500的连续整数(如98,99,100,101,102),所有组合。

代码如下:

1.用两层循环

static void Main(string[] args)
{
 for(int i=-500;i<500;i++)
 {
  int temp=i;
  int point=0;
  bool hasResult = false;
  for(int j=(i+1);j<500;j++)
  {
   temp+=j;
   if(temp>500) break;
   if(temp==500)
   {
    hasResult = true;
    point = j;
    break;
   }
  }
  if(hasResult)
  {
   Console.Write(i);
   for(int k=(i+1) ;k<=point ; k++)
   {
    Console.Write("+"+k);
   }
   Console.WriteLine("=500/n");
  }
 }
}

2.用单层循环来做

我的代码,答案和算法。

 public static void Main()
 {
  int m;
  int r = 1000;
  int n =  1;
  int loopNum = 0;

  while( r > n )
  {
   loopNum++;
   n++;
   m = ( 1000 / n + n - 1 ) / 2;

   if ( r % n == 0 &&  ( 1000 / n + n - 1) % 2 == 0  && m - n + 1 > 0 )
   {
    Console.Write( "500: " );
    
    for( int t = m - n + 1; t <= m; t ++ )
    {
     Console.Write( "{0} ", t );
    }
    Console.WriteLine();
    
    r = r / n;
   }
  }
  Console.WriteLine( "Total Loop {0}", loopNum );
  Console.ReadLine();
 }

500: 98 99 100 101 102
500: 59 60 61 62 63 64 65 66
500: 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
Total Loop 24

假设最后一个是m,数组个数是n.第一个数是m-n+1.它们的和是(m-n+1+m)*n = 500,m=( 1000 / n + n - 1 ) / 2; 要求m是整数,m-n+1>0.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值