自学内容网 自学内容网

前导一(c++题解)

题目描述

对于整数 x ,设 f(x) 是十进制  数字中的前导 1 的个数。例如有  。

已知整数f(1)=1 ,f(2)=0 ,f(1)=1,f(111)=3求  f(1)+f(2)+...f(n)。

输入格式

输入只有一个整数n。

输出格式

输出一个整数,表示答案。

样例

样例1输入

复制11

样例1输出

复制4

样例1解释

 ,,答案是  。

样例2输入

复制120

样例2输出

复制44

样例3输入

复制987654321

样例3输出

复制123456789

____________________________________________________________________________

写作不易,点个赞呗!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 

_____________________________________________________________________________

#include <bits/stdc++.h>
using namespace std;
long long a[100005];
long long n,ans;
int main(){
cin>>n;
for(long long i=1;i<=n;i=i*10+1){
for(long long j=i,k=i+1;j<=n;j*=10,k*=10){
ans+=k-j;
if(k*10>n&&j*10<=n){
ans+=n-j*10+1;
break;
}
}
}
cout<<ans; 
}

 


原文地址:https://blog.csdn.net/hb_zhyu/article/details/138001284

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!