簡體   English   中英

加權數字總和

[英]Weighted Sum of Digits

我試圖找到數字的加權總和,例如,如果我有124,則需要輸入:1 * 1 + 2 * 2 + 4 * 3。

到目前為止,我已經可以使用for循環將數字相乘:

Console.WriteLine("Input a number");
int num = Convert.ToInt32(Console.ReadLine());
int digit = 0;

for (int i = 4; i > 0; i--)
{                
    digit = num % 10 * i;
    num /= 10;
    Console.WriteLine(digit);
}

但是我不確定如何在后面加上數字。

您可以為4位數字執行此操作

Console.WriteLine("Input a number");
int num = Convert.ToInt32(Console.ReadLine());
int sum = 0;

for (int i = 4; i > 0; i--)
{                
    sum += num % 10 * i;
    num /= 10;
}

Console.WriteLine(sum);

但是,如果您希望代碼可以使用任意數量的代碼,請執行此操作

Console.WriteLine("Input a number");
int num = Convert.ToInt32(Console.ReadLine());
int sum = 0;

for (int i = num.ToString().Length; i > 0; i--)
{                
    sum += num % 10 * i;
    num /= 10;
}

Console.WriteLine(sum);

您是否要實現這一目標?

Console.WriteLine("Input a number");
int num = Convert.ToInt32(Console.ReadLine());
int digit = 0;
int i=num.ToString().Length;
int Sum= 0;
int digit2=0;
while(num>0)
{
digit= num%10;
digit2=digit*i;
Sum=Sum+digit2;
num=num/10;
i--;
}
Console.Writeline(Sum);
  int num, sum = 0, r;
        Console.WriteLine("Enter a Number : ");
        num = int.Parse(Console.ReadLine());          
       var add_n=(num.ToString().Length)+1;
        while (num != 0)
        {

            r = num % 10;
            num = num / 10;
            //Console.WriteLine(r+" "+(add_n-1));
            sum = sum + (r*(add_n-1));
            add_n--;
        }
        Console.WriteLine("Sum of Digits of the Number : "+sum);
        Console.ReadLine();

如果您想要簡單的解決方案(不是很快),可以嘗試Linq

Console.WriteLine("Input a number");
int num = Convert.ToInt32(Console.ReadLine());

Console.WriteLine(string.Join(" + ", num
  .Select((c, i) => $"{c - '0'} * {i + 1}")););

結果:

1 * 1 + 2 * 2 + 4 * 3

如果要找出總和,請添加Sum

int sum = num
  .Select((c, i) => (c - '0') * (i + 1))
  .Sum();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM