100 4 16の回答が4554って出てないことから調べたら
文字列での大小比較をしてるからですね
i
が4のときにおいて"4" >= "4"
はtrueだけど"4" <= "16"
はfalseになるのが原因ですね(辞書順比較が原因)
あともうちょい調べたら
arrNum.reduce
においてarrNum
の配列数が1つのときはarrNum[0]
をそのまま利用するっぽいので文字列のままっていうのもあるっぽい(なのでiが4とかのとき文字列比較になりおかしい)
js
1<!DOCTYPE html>
2<html>
3<head>
4 <meta charset="UTF-8">
5</head>
6<body>
7<script>
8function Main(input){
9 let str = '';
10 const num = input.trim().split(' ').map((v) => Number(v));
11 var answer = 0;
12 for(var i=0; i<=num[0]; i++){
13 var arrNum = String(i).split('').map((v) => Number(v));
14 var sum = arrNum.reduce((a,b) =>
15 Number(a)+Number(b)
16 );
17 if(sum >= num[1] && sum <= num[2]){
18 answer += i;
19 }
20 str += answer + ' ';
21 }
22 console.log(answer);
23 console.log(str);
24}
25Main('100 4 16');
26
27function Main2(input){
28 let str = '';
29 const num = input.trim().split(' ');
30 var answer = 0;
31 for(var i=0; i<=num[0]; i++){
32 var arrNum = String(i).split('');
33 var sum = arrNum.reduce((a,b) =>
34 Number(a)+Number(b)
35 );
36 if(sum >= num[1] && sum <= num[2]){
37 answer += i;
38 }
39 str += answer + ' ';
40 }
41 console.log(answer);
42 console.log(str);
43}
44Main2('100 4 16');
45</script>
46</body>
47</html>
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/23 16:15
2020/05/23 21:12
2020/05/23 23:36