507D (数位DP)

 /*
求后缀中(大于0)存在能被k整除的n位数的个数

从低位向高位按位DP
dp[0][i][j] 后缀均不能被k整除、被k除余j、位数为i的数的个数
dp[1][i][j] 存在能整除k的后缀、被k除余j、位数为i的数的个数

*/
#include<bits/stdc++.h>
using namespace std;
typedef __int64 LL;

LL dp[2][1002][102];
LL a;//当前位的位权%k
int main()
{
    int i,n,k,m,j,num;
    cin>>n>>k>>m;
    memset(dp,0,sizeof(dp));
    for(i=0;i<10;++i)     //位数为1的情况。
    {
        if(i%k==0&&i) dp[1][1][0]=(dp[1][1][0]+1)%m;
        else dp[0][1][i%k]=(dp[0][1][i%k]+1)%m;
    }
    a=1%k;
    for(i=2;i<=n;++i)
    {
        a=a*10%k;
        for(j=0;j<k;++j)
            for(num=0;num<=9;++num)
            {
                if(num==0&&i==n)continue;
                int New=(num*a+j)%k; //新数
                if(num&&New==0) dp[1][i][New]=(dp[1][i][New]+dp[0][i-1][j])%m;
                else dp[0][i][New]=(dp[0][i][New]+dp[0][i-1][j])%m;
                dp[1][i][New]=(dp[1][i][New]+dp[1][i-1][j])%m;
            }
    }
    LL ans=0;
    for(i=0;i<k;++i) ans=(ans+dp[1][n][i])%m;
    cout<<ans<<endl;
    return 0;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
data = pd.read_csv("data.csv") data.replace("M",1,inplace=True) data.replace("B",0,inplace=True) #获取特征x和特征y X = data.iloc[:, 3:5].values x = np.array(X) y = data.diagnosis y = np.array(y) #创建决策树算法对象 tree_clf = DecisionTreeClassifier(max_depth=2) #构建决策树 tree_clf.fit(x,y) #绘制决策树结构 tree.plot_tree(tree_clf) from matplotlib.colors import ListedColormap plt.rcParams["font.sans-serif"] = ["SimHei"] plt.rcParams["axes.unicode_minus"] = False #定义绘制决策树边界的函数 def plot_decision_boundary(clf, X, y, axes=[0, 10 , 0 , 5], data=True, legend=False, plot_training=True): x1s = np.linspace(axes[0], axes[1], 100) x2s = np.linspace(axes[2], axes[3], 100) x1, x2 = np.meshgrid(x1s, x2s) X_new = np.c_[x1.ravel(), x2.ravel()] y_pred = clf.predict(X_new).reshape(x1.shape) custom_cmap = ListedColormap(['#fafab0', '#0909ff', '#a0faa0']) plt.contourf(x1, x2, y_pred, alpha=0.3, cmap=custom_cmap) if not data: custom_cmap2 = ListedColormap(['#7d7d58', '#4c4c7f', '#507d50']) plt.contour(x1, x2, y_pred, cmap=custom_cmap2, alpha=0.8) if plot_training: plt.plot(X[:, 0][y == 0], X[:, 1][y == 0], "yo", label="0") plt.plot(X[:, 0][y == 1], X[:, 1][y == 1],"bs", label="1") plt.axis(axes) if data: plt.xlabel("属性",fontsize=14) plt.ylabel("特征",fontsize=14) else: plt.xlabel(r"$x_1$", fontsize=18) plt.xlabel(r"$x_2$", fontsize=18,rotation=0) if legend: plt.legend(loc="lower right", fontsize=14) tree_clf1 = DecisionTreeClassifier(random_state=42) tree_clf2 = DecisionTreeClassifier(min_samples_leaf=4,random_state=43) tree_clf1.fit(x,y) tree_clf2.fit(x,y) plt.figure(figsize=(15,6)) plt.subplot(121) plot_decision_boundary(tree_clf1, x, y, axes=[0, 40, 50, 150], data=False) plt.title('圖一') plt.subplot(122) plot_decision_boundary(tree_clf2, x, y, axes=[0, 40, 50, 150], data=False) plt.title('圖二')
最新发布
06-11

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值