【个人题解+代码】NOIP2010普及组首先前两题可以说非常水,第三题也是水题
第四题难度和前三题差别有点大……1.数字统计(two
pas/c/cpp)【问题描述】请统计某个给定范围[L,R]的所有整数中,数字2出现的次数
比如给定范围[2,22],数字2在数2中出现了1次,在数12中出现1次,在数20中出现1次,在数21中出现1次,在数22中出现2次,所以数字2在该范围内一共出现了6次
【输入】输入文件名为two
输入共1行,为两个正整数L和R,之间用一个空格隔开
【输出】输出文件名为two
输出共1行,表示数字2出现的次数
【输入输出样例1】two
out2226【输入输出样例2】two
out210020【数据范围】1≤L≤R≤10000
直接上题解:T1:two大水题,主要有如下几种方法:1
用字符串处理2
每次用mod10取最后一位再div103
递推递推式f[i]=f[idiv10]+f[imod10]然后累加即可(我是用这个做的)4
分别用数学公式计算每一位上2的个数(最快,但没必要,代码也较长)……varf:array[0
10000]oflongint;l,r,i,ans:longint;beginassign(input,'two
in');reset(input);assign(output,'two
out');rewrite(output);read(l,r);f[2]:=1;fori:=10tordof[i]:=f[idiv10]+f[imod10];fori:=ltordoinc(ans,f[i]);writeln(ans);close(input);close(output);end
2.接水问题(water
pas/c/cpp)【问题描述】学校里有一个水房,水