给定一个十进制正整数N,写下从1开始,到N的所有正数,计算出其中出现所有1的个数。 例如:n = 12,包含了5个1。1,10,12共包含3个1,11包含2个1,总共5个1。 Input 输入N(1 <= N <= 10^9) Output 输出包含1的个数 Input示例 12 Output示例 5
提供一组数据 输入127948输出99344 不是很好想
记n的长度为
我的代码有点乱
#include<cstdio>#include<cmath>int main(){ int n; int ans=0,t=1,res=0,add=0,tmp=0; scanf("%d",&n); while(n){ ans=ans+((n<10?-1:0)+n%10)*add+(n%10==1?res+1:0)+(n%10>1?t:0); tmp=add; add=add*10+t; res+=(n%10)*t; t*=10; n/=10; } PRintf("%d/n",ans+tmp); return 0;}新闻热点
疑难解答