当前位置:网站首页>B. I Hate 1111 (记忆化搜索 数论

B. I Hate 1111 (记忆化搜索 数论

2022-06-13 07:18:00 lcxdz

添加链接描述
可以发现高位的1111都可以由11或者111组成 那么判断是否能被11整除 或者减去111再整除
记忆化mp存储是否可以组成

#include<bits/stdc++.h>
using namespace std;
map<int,bool>mp;
int dfs(int u){
    
    if(mp.count(u))return mp[u];
    int mx=0;
    for(int i=11;i<=u;i=i*10+1){
    
        mx=i;
    }
    for(int i=mx;i>=11;i=i/10){
    //是往小判断
        // cout<<i<<"\n";
        if(dfs(u-i)){
    
            mp[u]=1;
            return mp[u];
        }
    }
    return mp[u];

}
int main(){
    
    int T;
    cin>>T;
    while(T--){
    
        mp[0]=1;//第一个0是可以被整除的
        int x;
        cin>>x;
        if(dfs(x))cout<<"YES\n";
        else cout<<"NO\n";
        
    }


    return 0;
}
原网站

版权声明
本文为[lcxdz]所创,转载请带上原文链接,感谢
https://minelois.blog.csdn.net/article/details/125233234