前导一(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)!