[英]Weighted Sum of Digits
I am trying to find the weighted sum of digits for example if I have 124 I need to make it: 1 * 1 + 2 * 2 + 4 * 3. 我试图找到数字的加权总和,例如,如果我有124,则需要输入:1 * 1 + 2 * 2 + 4 * 3。
So far I have been able to multiply the numbers using a for loop like so: 到目前为止,我已经可以使用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);
}
But I'm unsure as to how to add the numbers after. 但是我不确定如何在后面加上数字。
you can do this for 4 digits numbers 您可以为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);
but if you want your code work for any number, do this 但是,如果您希望代码可以使用任意数量的代码,请执行此操作
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);
Are you trying to achieve this? 您是否要实现这一目标?
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();
If you are for simple solution (which is not very fast) you can try Linq : 如果您想要简单的解决方案(不是很快),可以尝试Linq :
Console.WriteLine("Input a number");
int num = Convert.ToInt32(Console.ReadLine());
Console.WriteLine(string.Join(" + ", num
.Select((c, i) => $"{c - '0'} * {i + 1}")););
Outcome: 结果:
1 * 1 + 2 * 2 + 4 * 3
If you want to find out the sum, add Sum
: 如果要找出总和,请添加Sum
:
int sum = num
.Select((c, i) => (c - '0') * (i + 1))
.Sum();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.