统计1到N所有数中1的个数。
考数学的题目,想了半天没有想出暴力以外的办法。搜索一下,竟然是有规律的。而这个规律根据当前位置上的值,分为三种情况求当前位置下1的数量。a:个位为1,十位为10,以此类推。left:左边位置的上所有数构成的数字,即高位上的数字,right为右边位置上的所有数构成的数字,即低位上的数字。
1、当前为0,
s
u
m
+
=
l
e
f
t
∗
a
sum += left * a
sum+=left∗a;
2、当前为1,
s
u
m
+
=
l
e
f
t
∗
a
+
r
i
g
h
t
+
1
sum += left* a + right + 1
sum+=left∗a+right+1;
3、当前大于1,
s
u
m
+
=
(
l
e
f
t
+
1
)
∗
a
sum +=(left+1) *a
sum+=(left+1)∗a;
还要慢慢理解一下。
(用时:1:03:21.97)
转载:https://www.liuchuo.net/archives/2305
PAT 1049 Counting Ones
最新推荐文章于 2024-07-21 13:38:21 发布