没有合适的资源?快使用搜索试试~ 我知道了~
一本书的页码从自然数1 开始顺序编码直到自然数n。书的页码按照通常的习惯编排,都不含多余的前导数字0。问题要求对给定书的总页码n,计算出书的全部页码中分别用到多少次数字0,1,2,…,9。
资源推荐
资源详情
资源评论
#include<iostream>
#include<cmath>
using namespace std;
int f(int n){
return n * pow(10,(double)(n-1));
}
void CountNumber(int m,int* &a){
if(m != 0){
int n = log10(m) + 1;//位数
int k = m / pow(10,(double)(n-1));//最高位
if(n > 1){
for(int i = 1; i < k; i++)
a[i] += pow(10,(double)(n-1));
for(int i = 0; i < 10; i++)
a[i] += f(n-1) * k;
a[k] += m - k * pow(10,(double)(n-1)) + 1;
a[0] -= (pow(10,(double)(n-1))-1)/9;
}
else
{
for(int i = 1; i <= k; i++)
a[i]++;
}
m = m - k * pow(10,(double)(n-1));
if(m == 0)
a[0] += n-1;
else{
int n1 = log10(m) + 1;
#include<cmath>
using namespace std;
int f(int n){
return n * pow(10,(double)(n-1));
}
void CountNumber(int m,int* &a){
if(m != 0){
int n = log10(m) + 1;//位数
int k = m / pow(10,(double)(n-1));//最高位
if(n > 1){
for(int i = 1; i < k; i++)
a[i] += pow(10,(double)(n-1));
for(int i = 0; i < 10; i++)
a[i] += f(n-1) * k;
a[k] += m - k * pow(10,(double)(n-1)) + 1;
a[0] -= (pow(10,(double)(n-1))-1)/9;
}
else
{
for(int i = 1; i <= k; i++)
a[i]++;
}
m = m - k * pow(10,(double)(n-1));
if(m == 0)
a[0] += n-1;
else{
int n1 = log10(m) + 1;
资源评论
Jokes_Pan
- 粉丝: 0
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功