2016.8.8测试解题报告(binary,xx,minval,maxtrix)

本文分享了四道编程题的解题思路,包括:利用数论优化的二进制除法,通过数学公式求解最小正整数x的方法,使用堆数据结构求解函数最小值,以及应用区间动态规划解决矩阵乘法问题。每道题目都提供了详细的思路解析和代码实现。
摘要由CSDN通过智能技术生成

呵呵,差点AK……今天下午的考试可谓不艰难,考完试之后我越发珍惜生命的美好了。

1.二进制除法

题目描述:
二进制数n mod m的结果是多少?

思路:
对于二进制数的取模运算,我们的第一反应一定是模拟其减法运算,然后逐位相减。但是这道题的数据达到了2e5,鉴于减法模拟的巨大常数,一定是会T的(这个我本人在考试的时候写了一个果然是T了不必感到任何的怀疑)。所以说我们换一个角度考虑这个问题——数论。看到取模我就想起来那个当年那个坑了我两个小时的取模分配率,然后我又注意到题目里那个比较小的数字,m的长度最大为20,仿佛一下就开启了新世界的大门,我可以先把m处理为10进制作为整个题的moder,然后用这个moder,一边用快速幂将n转为10进制一边取模,时间复杂度O(m+n)。

代码:

/*
2016.8.8BulaBulaCHN
*/
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<string>
#include<iostream>
#include<iomanip>
#include<cmath>
#include<ctime>
#include<algorithm>
using namespace std;
long long moder;
long long p;
long long tenbit;
char x[200050];
char y[50];
int a1[200050];
int a[200050];
int main()
{
    freopen("binary.in","r",stdin);
    freopen("binary.out","w",stdout);
    scanf("%s%s",x,y);
    int leny=strlen(y);
    int lenx=strlen(x);
    p=1;
    for(int i=leny-1;i>=0;i--)
    {
        if(y[i]=='1') moder+=p;
        p=p*2;
    }//处理出moder
    p=1;
    for(int i=lenx-1;i>=0;i--)
    {
        
### 回答1: org.apache.commons.codec.binary.hex是一个Java编程语言中的类库,用于将二进制据转换为十六进制字符串,或将十六进制字符串转换为二进制据。它是Apache Commons Codec项目的一部分,提供了一些常见的编码和解码功能。 ### 回答2: org.apache.commons.codec.binary.hex是Apache Commons Codec库中提供的一个Java类,用于在字节组和十六进制字符串之间进行转换。 在计算机网络传输中,往往需要将二进制据转换为文本格式传输,例如在HTTP协议的请求体中,可能需要传输图片或者文件等二进制据。而在文本与二进制之间的转换过程中,十六进制字符串是一种常见的格式,因为十六进制字符串由16个字符构成,每个字符表示4位二进制,便于传输和处理。 org.apache.commons.codec.binary.hex内部实现了将字节组转换为十六进制字符串的方法,以及将十六进制字符串转换为字节组的方法。在使用该类时,我们可以通过编写代码调用这些方法来实现需要的转换。例如,如果我们有一个字节组byte[],想要将其转换为十六进制字符串,可以按照以下代码进行操作: String hexString = Hex.encodeHexString(byte[] data); 其中,Hex.encodeHexString是org.apache.commons.codec.binary.hex中的一个静态方法,用于将字节组转换为十六进制字符串。同样的,如果需要将一个十六进制字符串还原为字节组,可以按照以下代码进行操作: byte[] data = Hex.decodeHex(String hexString.toCharArray()); 在以上代码中,Hex.decodeHex是org.apache.commons.codec.binary.hex中的一个静态方法,用于将十六进制字符串转换为字节组。需要注意的是,由于十六进制字符串中的每个字符表示4位二进制,因此在还原时需要先将字符串转换为字符组,然后才能进行还原。 总之,org.apache.commons.codec.binary.hex是一个非常有用的Java类,可以帮助我们在字节组和十六进制字符串之间进行转换,并且其内部实现十分高效。在进行二进制据的文本化传输时,我们可以利用该类来实现需要的处理。 ### 回答3: org.apache.commons.codec.binary.hex是一个Apache Commons Codec库的Java类,提供了十六进制编码和解码的实现。十六进制编码是将二进制据转换为易于传输和使用的文本格式的过程,可以用于加密、据传输等领域。 在Java中,可以使用该库对二进制据进行编码和解码操作。具体来说,org.apache.commons.codec.binary.hex中提供以下方法: 1. encodeHex:实现对二进制据的十六进制编码,返回一个字符组。 2. decodeHex:实现对十六进制编码的解码,返回一个字节组。 3. encodeHexString:实现对二进制据的十六进制编码,返回一个字符串。 4. decodeHexString:实现对十六进制编码的解码,返回一个字节组。 在实际应用中,org.apache.commons.codec.binary.hex经常被用于网络通信、文件传输、加密解密以及各种据格式的转换等场景。例如,可以使用该库将图片文件转换为十六进制编码后进行网络传输,也可以使用该库对加密后的据进行解码。 总之,org.apache.commons.codec.binary.hex提供了易于使用的十六进制编码和解码工具,方便了开发人员进行据操作和据传输工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值