
好像没什么很好写的,稍微记一下类题做法
题目大意: 给出两个数n < m ,要求从n写至m共有多少个0.
思路
假定函数fun(x)计算由0至x的0数量,那么题目要求即f(m)-f(n-1).
那么要求既是设计f函数.
可以将x拆分为左右两部分,以中间一位为0情况,枚举左右两边可能的情况.
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
#include<iostream> #include<stdlib.h> #include<algorithm> #include<string.h> #include<string> #include<math.h> #include<map> #include<stack> using namespace std; typedef long long ll; const double PI = acos(-1.0); const double eps=1e-4; const int N=1000007; ll (ll a){ if(a<0)return 0; ll sum=1,b=0,flag=1; while(a>=10){ ll mid=a%10; a/=10; if(mid>0)sum+=a*flag; else sum+=(a-1)*flag+(b+1); b+=mid*flag; flag*=10; } return sum; } int main(){ ll n,m; while(scanf("%lld %lld",&n,&m)!=EOF&&n!=-1&&m!=-1){ printf("%lldn",coun(m)-coun(n-1)); } return 0; }
|
近期评论