light oj 1068(数位dp)

题意:求[l,r]之间能被k整除 且各位数字之和也能被k整除 的数的个数

思路:因为2^31 为十位数  最大的十位数 各个数位之和为90  所以当k>90时 各个数位之和必不能被k整除 所以k>90可以直接输出0

k<90时正常的数位dp就可以了

#include<stdio.h>
#include<string.h>

int dp[10][90][90];
int digit[10];
int k;

int dfs(int pos,int mod,int s,int doing)
{
    if(pos==-1)return mod==0&& s%k==0;
    if(!doing && dp[pos][mod][s]!=-1)return dp[pos][mod][s];

    int ans=0,End,i;
    End=doing?digit[pos]:9;

    for(i=0;i<=End;i++)
    {
        ans+=dfs(pos-1,(mod*10+i)%k,s+i,doing &&i==End);
    }
    if(!doing)
        dp[pos][mod][s]=ans;
    return ans;
}
int solve(int x)
{
    int l=0;
    memset(digit,0,sizeof(digit));
    memset(dp,-1,sizeof(dp));
    while(x>0)
    {
        digit[l++]=x%10;
        x=x/10;
    }
    return dfs(l-1,0,0,1);
}
int main()
{
    int t,v=1;
    int a,b;
    scanf("%d",&t);

    while(t--)
    {
        scanf("%d%d%d",&a,&b,&k);
        if(k>90)
        {
            printf("Case %d: 0\n",v++);
            continue;
        }
        printf("Case %d: %d\n",v++,solve(b)-solve(a-1));
    }
    return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: IPv4是一种互联网协议版本,它使用32位的地址来唯一标识网络上的设备。每个IPv4地址由四个8位的进制数组成,以点分进制的形式表示,例如192.168.0.1。 IPv4地址由两部分组成,网络地址和主机地址。网络地址用来标识一组设备所在的网络,而主机地址用来标识在该网络上的具体设备。IPv4地址通过子网掩码来划分子网,将网络地址和主机地址分开。 IPv4地址共有近42亿个,这使得IPv4面临着地址耗尽的问题。为了解决这个问题,IPv6被提出,它采用了128位的地址空间,可以提供更多的IP地址。 而在 OJ 考试中,可能会涉及到对IPv4地址的一些操作和计算,比如判断两个IP地址是否属于同一子网,计算网络地址和广播地址等。这种题目可以通过将IP地址和子网掩码进行逐位的按位与运算,来得到所需的网络地址和广播地址。 除了IP地址的操作外,OJ考试中还可能会涉及到其他与网络相关的题目,比如路由器配置、网络拓扑设计、路由表操作等。这些题目旨在考察学生对网络的理解和实践能力。 综上所述,oj考试中的IPv4题目是与IPv4地址相关的题目,设计的目的是考察学生对IPv4地址的理解和操作能力。在解题过程中,需要了解IPv4地址的二进制表示、按位运算和子网划分等知识点。 ### 回答2: IPv4是指第四个版本的Internet Protocol(互联网协议),它用于在因特网上分配和管理IP地址。IPv4中的IP地址由32位二进制数表示,每个二进制位可以是0或1,因此总共有2的32次方个可能的地址。这意味着IPv4最多可以分配大约42亿个独特的IP地址。 IPv4的IP地址采用由点分隔的进制表示法,每个数字代表地址中的8个二进制位。例如,IP地址"192.168.0.1"代表了二进制位11000000.10101000.00000000.00000001。这样的IP地址通常被用于标识互联网上的计算机和其他网络设备。 而在在线评测(oj)考试中,IP地址可以用来识别用户的设备并记录其提交的答案。通过记录IP地址,考试系统可以防止作弊行为,例如同一时段内多次提交答案或使用多个账户进行作弊。 当然,随着互联网的发展和IPv4地址枯竭的问题,IPv6(第六个版本的Internet Protocol)正逐渐取代IPv4。IPv6采用了128位的地址大小,为互联网提供了更大的地址空间以满足日益增长的设备数量。IPv6的地址表示方法也不同于IPv4,它采用八组四位的六进制数分隔,例如"2001:0db8:85a3:0000:0000:8a2e:0370:7334"。 总之,IPv4采用32位的二进制数表示IP地址,最多可以分配约42亿个地址。在oj考试中,IP地址可以用来识别用户设备并记录其提交的答案。而随着IPv4地址枯竭问题的出现,IPv6正逐渐取代IPv4成为新的互联网协议。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值