BZOJ1833: [ZJOI2010]count 数字计数
2014-08-16 17:11
369 查看
1833: [ZJOI2010]count 数字计数
Time Limit: 3 Sec Memory Limit: 64 MBSubmit: 1250 Solved: 574
[Submit][Status]
Description
给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次。Input
输入文件中仅包含一行两个整数a、b,含义如上所述。Output
输出文件中包含一行10个整数,分别表示0-9在[a,b]中出现了多少次。Sample Input
1 99Sample Output
9 20 20 20 20 20 20 20 20 20HINT
30%的数据中,a<=b<=10^6;100%的数据中,a<=b<=10^12。
Source
Day1题解:红书上的原题。。。可是答案错了。。。自己又yy了好久
关键语句是这里:
for i:=n downto 1 do begin for j:=0 to 9 do inc(a[j],mi[i-2]*(i-1)*c[i]); for j:=0 to c[i]-1 do inc(a[j],mi[i-1]); inc(a[c[i]],x mod mi[i-1]+1); end; for i:=1 to n do s[i]:='1';val(s,x); dec(a[0],x);
主要步骤是:
1. 0-9的使用次数增加平均使用的次数
2. 0-c[i]-1的使用次数增加作为最高位的使用次数
3. c[i]的使用次数增加 x mod mi[i-1] 其中mi[i]表示10^i
4.循环结束后减去多用的0的个数
代码:
var a,b,c,mi:array[-1..15] of int64; s:ansistring; x,y:int64; i:longint; procedure calc(x:int64); var i,j,n:longint; begin fillchar(a,sizeof(a),0); str(x,s);n:=length(s); for i:=1 to n do c[i]:=ord(s[n+1-i])-48; for i:=n downto 1 do begin for j:=0 to 9 do inc(a[j],mi[i-2]*(i-1)*c[i]); for j:=0 to c[i]-1 do inc(a[j],mi[i-1]); inc(a[c[i]],x mod mi[i-1]+1); end; for i:=1 to n do s[i]:='1';val(s,x); dec(a[0],x); end; procedure main; begin mi[0]:=1; for i:=1 to 13 do mi[i]:=mi[i-1]*10; readln(x,y); calc(y); for i:=0 to 9 do b[i]:=a[i]; calc(x-1); write(b[0]-a[0]); for i:=1 to 9 do write(' ',b[i]-a[i]); end; begin assign(input,'input.txt');assign(output,'output.txt'); reset(input);rewrite(output); main; close(input);close(output); end.
View Code
相关文章推荐
- BZOJ1833 [ZJOI2010]count 数字计数
- BZOJ1833 [ZJOI2010]count 数字计数
- BZOJ1833: [ZJOI2010]count 数字计数
- BZOJ1833: [ZJOI2010]count 数字计数
- bzoj1833: [ZJOI2010]count 数字计数(数位Dp)
- BZOJ1833: [ZJOI2010]count 数字计数
- bzoj1833 [ZJOI2010]count 数字计数
- bzoj1833: [ZJOI2010]count 数字计数
- BZOJ1833 [ZJOI2010]count 数字计数
- bzoj1833 [ZJOI2010]count 数字计数
- bzoj1833[ZJOI2010]count 数字计数 数位DP
- bzoj1833: [ZJOI2010]count 数字计数
- 1833: [ZJOI2010]count 数字计数
- 1833: [ZJOI2010]count 数字计数——数位dp
- 【bzoj 1833】【codevs 1359】 [ZJOI2010]count 数字计数(数位dp)
- [BZOJ 1833][ZJOI 2010]count数字计数(数位DP)
- 1833: [ZJOI2010]count 数字计数 - BZOJ
- [BZOJ1833][ZJOI2010]count数字计数
- bzoj1833 [ZJOI2010]count 数字计数(数位)
- bzoj 1833: [ZJOI2010]count 数字计数