C#练习题答案: Vasya和楼梯【难度:2级】--景越C#经典编程题库,1000道C#基础练习题等你来挑战

Vasya和楼梯【难度:2级】:

答案1:

using System;

public class Stairs
    {
        public static int NumberOfSteps(int n, int m)
        {
            for (int i = (n + 1) / 2; i <= n; i++)
            if (i % m == 0)
                return i;
            return -1;
        }
    }

答案2:

using System;

public class Stairs
    {
        public static int NumberOfSteps(int n, int m)
        {
          int minSteps = ( n + 1 ) / 2;
          for(int i = minSteps; i <= n; i++){
            if(i%m==0)return i;
          }
          return -1;
        }
    }

答案3:

using System;

public class Stairs
    {
        public static int NumberOfSteps(int n, int m)
        {
                        int minSteps = n/2 + n%2;

            if (n < m)
            {
                return -1;
            }

            if (minSteps % m == 0)
            {
                return minSteps;
            }

            return minSteps + m - minSteps % m;
        }
    }

答案4:

using System;

public class Stairs
{
    public static int NumberOfSteps(int n, int m)
    {
      int min = n / 2 + n % 2;
      if (n < m) return -1;
      return min + (m - min % m) % m;
    }
}

答案5:

using System;
using System.Linq;
public class Stairs
    {
        public static int NumberOfSteps(int n, int m)
        {
          return n-Enumerable.Range(0,n/2+1).Where(i=>(n-i)%m==0).DefaultIfEmpty(n+1).Max();
        }
    }

答案6:

using System;

public class Stairs
    {
        public static int NumberOfSteps(int n, int m)
        {
          for(int a=n/2; a>=0; a--)
            {
                int b=n-2*a;
                if ((a + b) % m == 0) return a + b;
            }
            return -1;
        }
    }

答案7:

using System;

public class Stairs
    {
        public static int NumberOfSteps(int n, int m)
        {
          if (n < m)
            return -1;
          return (n / (2 * m)) * m + (n % (2*m) != 0 ? m : 0);
        }
    }

答案8:

using System;

public class Stairs
    {
        public static int NumberOfSteps(int n, int m)
        {
          int step2 = n / 2;
          int step1 = n % 2;
          int extraMoves = (m - (step2 + step1) % m) % m;
          return (extraMoves > step2) ? -1 : step2 + step1 + extraMoves;
        }
    }

答案9:

using System;

public class Stairs {
  public static int NumberOfSteps(int n, int m) {
    int steps = (n+1)/2; // minimal amount of steps
    if(steps % m == 0) return steps;
    
    steps += m - (steps % m); // closest amount divisible by m
    return steps>n ? -1 : steps;
  }
}

答案10:

using System;
using System.Linq;

public class Stairs
    {
        public static int NumberOfSteps(int n, int m)
        {
          var result = Enumerable.Range(1, n).FirstOrDefault(x => x % m == 0 &amp;&amp; x * 2 >= n);
          
          return result == 0 ? -1 : result;
        }
    }



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值