小米oj #40 找小“3”
把各个数位上的"3"的出现次数找找一边就行了,不会数位DP,但水过去了
#include <bits/stdc++.h> using namespace std; typedef long long ll; int main(){ ll n; while(~scanf("%lld",&n)){ ll ans=0,t1=1,k=0,no; while(n){ ll t=t1; if(t1==1)t*=2; ans+=n/10*t/2; no=n%10; if(no>3)ans+=t/2; else if(no==3)ans+=(t1==1?1:(k+1)/2); k+=no*t1; t1*=10; n/=10; } printf("%lld\n",ans); } return 0; }