统计1-n之间的数字里1出现的个数——1477
2011-03-14 21:33
225 查看
http://192.168.7.42/problemDetail.aspx?pid=1477
前打表找规律
后来对数字是一的进行统计
如103
对最高位开始统计
若为0 ,则不处理
若该位为1则总数加上后面的数:加上以1*a[i](相应表中数),03+1
若为大于1的数 则乘以该数的最高位(如203 则 加上以2*a[i](相应表中数),再加上03+1,再加上100)
再到低位执行直到个位数
View Code
前打表找规律
后来对数字是一的进行统计
如103
对最高位开始统计
若为0 ,则不处理
若该位为1则总数加上后面的数:加上以1*a[i](相应表中数),03+1
若为大于1的数 则乘以该数的最高位(如203 则 加上以2*a[i](相应表中数),再加上03+1,再加上100)
再到低位执行直到个位数
View Code
#include<stdio.h> #include<math.h> int main() { int a[10]={0,1,20,300,4000,50000,600000,7000000,80000000}; int n; while(scanf("%d",&n)!=EOF) { int i; int add=0; int b[11],c[11]; int temp=n,all=0; while(temp) { b[add]=temp%10; temp/=10; add++; } for(i=0;i<add;i++) { all+=b[i]*pow(10,i); c[i]=all; } int max=0; for(i=add-1;i>=0;i--) { if(b[i]==0) continue; temp=b[i]; max+=temp*a[i]; if(temp>=2) max+=(int)pow(10,i); if(temp==1) { if(i==0) max+=1; else max+=c[i-1]+1; } } printf("%d\n",max); } return 0; }
相关文章推荐
- 统计1到n之间的所有数字中1出现的个数
- 统计1到n之间的所有数字中1出现的个数
- (Realx 数论1.28)POJ 2282 The Counting Problem(区间统计数字:统计a、b之间各个数字(0~9)出现的次数)
- 统计1到n之间的所有数字中1出现的个数
- 随机生成 50 个数字,每个数字的范围在 [10, 50] 之间,统计每个数字出现的次数,最后将每个数字和它出现的次数打印出来
- 统计页码中数字出现的次数
- K&R《C程序设计语言》p15:统计各个数字、空白符及其他字符出现的次数
- 统计输入字符串中: 各个数字、空白字符、以及其他所有字符出现的次数
- 【数据结构】用Hash方法统计数字出现次数
- 16周项目一:字符串(统计每一个数字出现的的次数)
- 【C代码练习17】输入数量不确定的0-9范围内的整数,统计每一种数字出现的次数,输入以-1结束
- 写一个函数,计算40亿以内的最大的那个f(n)=n的值,函数f的功能是统计0到n之间所有数字1的数字和
- 统计用户输入的一串数字中每个数字出现的次数
- (4)统计一个数字,在排序数组中出现的次数
- Oracle关于统计每天数据的总和时出现无效数字问题
- 经典算法-统计0~n之间的数字二进制的1的个数
- C统计1-49的数字出现的次数
- 【C语言】统计数字在排序数组中出现的次数
- 统计一个数字在排序数组中出现的次数
- 前端笔试题目练习笔记:统计数组中不同的数字出现的概率并排序