トップページに戻る
次の競技プログラミングの問題へ
前の競技プログラミングの問題へ
No.289 数字を全て足そう
■■■問題■■■
文字列Sが与えられるので、その中のそれぞれの数字を1桁の数値とみなして、
全ての合計値を求めてください。
例えば1test23という文字列の数字の合計値は1+2+3=6となる。
■■■入力■■■
S
1 <= |S| <= 1万
|S| は文字列Sの長さである。
文字列Sは半角英数字のみで構成される。
■■■出力■■■
各数字の合計値を出力してください。
C#のソース
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static string InputPattern = "Input1";
static List<string> GetInputList()
{
var WillReturn = new List<string>();
if (InputPattern == "Input1") {
WillReturn.Add("1test23");
//6
//1+2+3=6となります。
//1+23ではないことに注意
}
else if (InputPattern == "Input2") {
WillReturn.Add("2015");
//8
}
else if (InputPattern == "Input3") {
WillReturn.Add("1a2b3c4d5e6f7g8h90");
//45
}
else {
string wkStr;
while ((wkStr = Console.ReadLine()) != null) WillReturn.Add(wkStr);
}
return WillReturn;
}
static void Main()
{
List<string> InputList = GetInputList();
string S = InputList[0];
Func<char, int> SumFunc = pChar =>
{
if ('1' <= pChar && pChar <= '9')
return pChar - '1' + 1;
return 0;
};
Console.WriteLine(S.Sum(X => SumFunc(X)));
}
}
解説
ナイーブに実装してます。