• Acwing 540 No Nine


    写在前面

    这道题真有意思悠闲.gif

    Idea

    题意

    ([L,R])内不被(9)整除且每一位都不是(9)的数的个数。

    思路:

    数位(DP),由((x+y)\%m=(x\%m+y\%m)%m)。直接维护前(l)位对9取模的值,向后(dfs)到最后一位发现模数不是0就计数。

    Code

    int sum[maxn];
    int dp[maxn][maxn];
    inline int dfs(int l,int p,bool flag){
    	if(!flag&&~dp[l][p]) return dp[l][p];
    	if(l==0){
    		if(p%9==0) return dp[l][p]=0;
    		return dp[l][p]=1;
    	}
    	int pos=flag?sum[l]:9;
    	int res=0;
    	for(int i=0;i<=pos;i++){
    		if(i==9) continue;
    		res+=dfs(l-1,(p*10+i)%9,flag&&(i==pos));
    	}
    	if(!flag) dp[l][p]=res;
    	return res;
    }
    inline int find(int x){
    	int tot=0;
    	while(x){
    		sum[++tot]=x%10;
    		x/=10;
    	}
    	return dfs(tot,0,1);
    }
    signed main(){
    	int T=read(),_=0;
    	mem(dp,-1);
    	while(T--){
    		int L=read(),R=read();
    		printf("Case #%d: %lld
    ",++_,find(R)-find(L-1));
    	}
    	return 0;
    } 
    

    (P.S:)不要私信问我某某地方为什么这样写,本人一向无法解释。(QAQ)

    因为只是.jpg

    [The quad End ]

    [ ext{原谅我藏在心里燎燎的狂傲,去战,面对天地荡浩。-《剑心》张杰} ]

  • 相关阅读:
    CoreLocation
    通知(NSNotificationCenter)
    加载xib文件
    UITextField
    UIButton
    UILabel
    UIAlertController
    layoutSubviews
    Java AQS详解(转)
    Java中synchronized
  • 原文地址:https://www.cnblogs.com/cbyyc/p/11598092.html
Copyright © 2020-2023  润新知