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

级联总和【难度:1级】:

答案1:

using static System.Math;
using System.Linq;
public class Kata
{
  public static bool CheckConcatenatedSum(int number, int n) =>
    (number != 0 || n != 0)
    && Abs(number).ToString().Sum(c => c - '0') *  (((long)Pow(10,n)) / 9) == Abs(number);
}

答案2:

using System;
using System.Linq;

public class Kata
{
  /// <summary>
  /// Returns a Boolean representing if a number with its digits concatenated an arbitrary number of times and summed is the same as the original number.</summary>
  /// <param name="number">int to be tested.</param>
  /// <param name="n">int which represents the number of times to concatenate each digit</param>
  public static bool CheckConcatenatedSum(int number, int n)
  {
    if(number < 0) number = -number;
    if(n > number.ToString().Length) return false;    
    
    return number.ToString().Select(a => int.Parse(new String(a,n))).Sum() == number;    
  }
}

答案3:

using System;
using System.Linq;

public class Kata
{
    public static bool CheckConcatenatedSum(int number, int n)
    {
        int sign = number < 0 ? -1 : 1;
        string result = (sign * number).ToString();
        return sign * result.Select(x => Int64.Parse(new string(x, n))).Sum() == number;
    }
}

答案4:

using System;
using System.Linq;

public class Kata {
    public static bool CheckConcatenatedSum( int number, int n ) {
        return
            Convert.ToString( Math.Abs( number ) )
                .Select( d => long.Parse( new string( Enumerable.Repeat( d, n ).ToArray( ) ) ) )
                .Sum( i => i*Math.Sign( number ) ) == number;
    }
}

答案5:

using System;
using System.Linq;

public class Kata
{
  /// <summary>
  /// Returns a Boolean representing if a number with its digits concatenated an arbitrary number of times and summed is the same as the original number.</summary>
  /// <param name="number">int to be tested.</param>
  /// <param name="n">int which represents the number of times to concatenate each digit</param>
  public static bool CheckConcatenatedSum(int number, int n)
  {
    char[] digits = Math.Abs(number).ToString().ToCharArray();
    
    string[] numbers = new string[digits.Length];
    
    for (int i = 0; i < digits.Length; i++)
    {
      numbers[i] = new String(digits[i], n);
    }
    
    return Math.Abs(number) == numbers.Select(x => Int64.Parse(x)).Sum();
  }
}

答案6:

using System;
using System.Collections.Generic;

public class Kata
{
  public static bool CheckConcatenatedSum(int number, int n)
  {
    int num = number;
    int sum = 0;
    var cd = ConcatenatedDigits(DigitsList(num), n);
    foreach (var i in cd)
    {
      if (number < 0)
        sum -= i;
      else
        sum += i;
    }
    return number == sum;
  }
  
  public static int[] DigitsList(int num)
  {
    var lst = new List<int>();
    int number = Math.Abs(num);
    while (number > 0)
    {
      lst.Add(number%10);
      number /= 10;
    }
    return lst.ToArray();
  }
  
  public static int[] ConcatenatedDigits(int[] arr, int n)
  {
    for (int i=0; i<arr.Length; i++)
    {
      int x = arr[i];
      for (int j=1; j<n; j++)
      {
        x = (x*10) + x%10;
      }
      arr[i] = x;
    }
    return arr;
  }
}

答案7:

using System;

using static System.Math;
using System.Linq;
public class Kata
{
  public static bool CheckConcatenatedSum(int number, int n) =>
    (number != 0 || n != 0)
    &amp;&amp; Abs(number).ToString().Sum(c => c - '0') *  (((long)Pow(10,n)) / 9) == Abs(number);
}

答案8:

using System;
using System.Linq;

public class Kata
{
  public static bool CheckConcatenatedSum(int number, int n)
  {  
    return Math.Abs(number) == Math.Abs(number).ToString().Sum(x => long.Parse(string.Concat(Enumerable.Repeat(x, n))));
  }
}

答案9:

using static System.Math;
using System.Linq;
public class Kata
{
  public static bool CheckConcatenatedSum(int nr, int n) =>
 (nr != 0 || n != 0) &amp;&amp; Abs(nr).ToString().Sum(c => c - '0') *  (((long)Pow(10,n)) / 9) == Abs(nr);
}

答案10:

using System;
using System.Collections.Generic;
using System.Linq;

public class Kata
{
      public static bool CheckConcatenatedSum(int nu, int n)
        {Console.WriteLine(nu+" "+n);
            string str = "";int sum = 0;
            char[] ar = (nu + "").ToCharArray();
            if (nu>0)
            {           
                  foreach (var item in ar)
                  {
                     for (int i = 0; i < n; i++) {  str += item;  }
                          sum += int.Parse(str);
                          str = "";
                  }
                if (sum==nu) { return true;}
                return false;
            }
            if (nu < 0)
            {ar[0]='0';
                foreach (var item in ar)
                {
                    for (int i = 0; i < n; i++) { str += item; }
                    sum -= int.Parse(str);
                    str = "";
                }
                if (sum == nu) { return true; }
                return false;
            }
            return false;
        }
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值