using System;publicclassStairs{publicstaticintNumberOfSteps(int n,int m){for(int i =(n +1)/2; i <= n; i++)if(i % m ==0)return i;return-1;}}
答案2:
using System;publicclassStairs{publicstaticintNumberOfSteps(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;publicclassStairs{publicstaticintNumberOfSteps(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;publicclassStairs{publicstaticintNumberOfSteps(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;publicclassStairs{publicstaticintNumberOfSteps(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;publicclassStairs{publicstaticintNumberOfSteps(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;publicclassStairs{publicstaticintNumberOfSteps(int n,int m){if(n < m)return-1;return(n /(2* m))* m +(n %(2*m)!=0? m :0);}}
答案8:
using System;publicclassStairs{publicstaticintNumberOfSteps(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;publicclassStairs{publicstaticintNumberOfSteps(int n,int m){int steps =(n+1)/2;// minimal amount of stepsif(steps % m ==0)return steps;
steps += m -(steps % m);// closest amount divisible by mreturn steps>n ?-1: steps;}}
答案10:
using System;using System.Linq;publicclassStairs{publicstaticintNumberOfSteps(int n,int m){var result = Enumerable.Range(1, n).FirstOrDefault(x => x % m ==0&& x *2>= n);return result ==0?-1: result;}}