精华内容
下载资源
问答
  • 进制

    2021-03-05 10:30:38
    进制的转化 R进制转十进制使用按权展开的方法,具体方法为:将R进制数的每一位数值用R的K次形式表示,即幂的底数是R,指数是KK与该位和小数点之间的距离有关。当该位位于小数点左边,K值是该位小数点之间数码的...

    进制的转化

    • R进制转十进制使用按权展开的方法,具体方法为:将R进制数的每一位数值用R的K次形式表示,即幂的底数是R,指数是K,K与该位和小数点之间的距离有关。当该位位于小数点左边,K值是该位与小数点之间数码的个数,而当该位位于小数点右边,K值是负值,其绝对值是该位和小数点之间数码的个数加1。
    • 小数点左边的次幂一次是0、1、2、3… 小数点右边的次幂依次是-1、-2、-3…

    例如二进制 10100.01 = 1* 2的四次+12的2次+12的-2次
    例如七进制 604.01=67的2次+47的0次+1*7的-2次

    • 十进制转R进制使用短除法

    例如将94转换为二进制数在这里插入图片描述
    将十进制X转换为任意进制Y的数,即X/Y,一直除,直到除尽为止,对于取余的数,从下至上得到结果

    • 二进制转八进制与十六进制数

    每三个2进制位可化为1个八进制位,从右到左分段,每三个为一段,当左端不够三位时可往左边补0,或者不补也可以。
    每四位二进制数可化为1位16进制数,同上。
    十六进制中还会用到字母,A-10、B-11、C-12、D-13、E-14、F-15

    推荐软考学习视频:https://www.bilibili.com/video/BV1Qf4y1z7Eb?from=search&seid=3212014583428419515
    以上是根据此视频罗列的一些知识点,大家可打开链接去学习。

    展开全文
  • #include<iostream> using namespace std; void calculate(int n,int k); int main() { int x,m;...//输入十进制数x要转换成进制m calculate(x,m);//调用函数进行转换 cout<<endl; ...

    #include<iostream>
    using namespace std;
    void calculate(int n,int k);
     
    int main()
    {
        int x,m;
        cin>>x>>m;//输入十进制数x与要转换成的进制m
        calculate(x,m);//调用函数进行转换
        cout<<endl;
        return 0;
    }
     
    void calculate(int n,int k)
    {
        char num[16]= {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
        int temp;
        temp=n%k;
        n/=k;
        if(n!=0)//判断是否到达边界n=0
            calculate(n,k);
        cout<<num[temp];
    }
     

    展开全文
  • * 3,每一位相加后的数除k取余得到一个k进制的数 * 4,将该数转化十进制即可输出 */ public static void main(String[] args) { int [] arr={2,2,2,2,3,3,3,3,6,6,6,6,9,9,9,9,8,8,8,8,7,5,5,5
  • 深化课程改革 打造高效课堂 PAGE 2 不是每一次努力都能取得成功但每一次成功都来自不懈努力 ...将十进制数n转化成十六进制数并存储在字符串s中k= 2.将十进制数n转化成十六进制数并存储在字符串s中 k=0123456789A
  • java实现进制转换

    2020-07-21 16:58:28
    本篇主要使用java方法实现,若要实现:十进制转化k进制,主要采用思想:除k取余法,其他进制转化十进制就比较好算了。要熟悉利用二进制与进制与十六进制之间关系。 代码: package hexadecimal_conversion; ...

    本篇主要使用java方法实现,若要实现:十进制转化为k进制,主要采用思想:除k取余法,其他进制转化为十进制就比较好算了。要熟悉利用二进制与八进制与十六进制之间的关系。

    代码:

    package hexadecimal_conversion;
    //进制转换
    public class Conver {
    
    	public static void main(String[] args) {
    		//十进制转化为其他进制--toString方法,参数为整形,结果为字符串
    		int num_10 = 1096256;
    		String s2 = Integer.toBinaryString(num_10);
    		String s8 = Integer.toOctalString(num_10);
    		String s16 = Integer.toHexString(num_10);
    		System.out.println("2进制:"+ s2 +"--" + "8进制:" + s8 + "--" +"16进制:" + s16 );
    		String num2 = Integer.toString(num_10, 3);  //  10进制转化为任意进制
    		System.out.println(num2);
    		
    		//其他进制转换为10进制--valueOf方法,参数为字符串和转化进制,结果为整形
    		int num_2 = Integer.valueOf("0110",2);   // 2进制转化为10进制
    		int num_8 = Integer.valueOf("4567",8);  //8进制转化为10进制
    		int num_16 = Integer.valueOf("ffff",16);  //16进制转化为10进制
    		System.out.println(num_16);
    		
    		//假设输入的为7进制--->  将7进制先转换为10进制再转化为8进制
    		String num_7 = "1234560";
    		String s_8 = Integer.toString(Integer.valueOf(num_7, 7),8);
    		System.out.println(s_8);
    	}
    
    }
    
    
    展开全文
  • 当这个2^k进制转化为2进制时,原来的每一位(可以相对于十进制中的每一位来理解)都对应了二进制数中长为k的一个区段。 举个栗子,对于一个16(2^4)进制的数 ABCD (即 10 11 12 13) 打开windows自带的计算器...

     

    题面在最下方。

    从题意中可以获取灵感:k与w是有关系的。

    当这个2^k进制数转化为2进制时,原来的每一位(可以相对于十进制中的每一位来理解)都对应了二进制数中长为k的一个区段。

    举个栗子,对于一个16(2^4)进制的数 ABCD (即 10 11 12 13)

    打开windows自带的计算器就能看到:,其中 A对应二进制下的1010,B对应1011,以此类推。

    所以这就体现出了阶段性的特点,可以考虑采用DP解答。 

    首先要做的准备工作:

    根据题意“在2^k进制下的这个数的位数要大于等于2,数字严格上升”,所以不可能有任何有效位取0的情况(可以有前导零)。

    设当前推导位(第i位)取值范围为[1,maxx],令x=w%n,对于maxx讨论如下:

    若 x==0 , 则所有位的取值范围都是[1,(1<<k)-1]。

    若 x!=0 ,则在最高位上可取的值为 [1,(1<<x)-1],其他位是[1,(1<<k)-1]。

    从低位向高位推导,令 F[i][j] 是第i位上放数字j后满足条件的总方案数

    则转移方程为 F[i][j]=∑F[i-1][k](j<k<=maxx)

    同时由于w限制的是最大位数而非必需位数,所以在每次转移过后,都要 ans+=F[i][j]

     

    如何优化?

    第一个简单的优化,每一次状态转移的求和可以用后缀数组进行优化。

    第二个优化是可以用滚动数组的思想,把F[i][j]优化为一维的F[i],具体可看代码实现。

    其他要说的

    高精度的模版是我从网上扒下来的,至今不会写高精度(逃)

     

      1 #include<cstdio>
      2 #include<cstring>
      3 #include<algorithm>
      4 #include<string>
      5 using namespace std;
      6 template<class T> inline void read(T &_a){
      7     bool f=0;int _ch=getchar();_a=0;
      8     while(_ch<'0' || _ch>'9'){if(_ch=='-')f=1;_ch=getchar();}
      9     while(_ch>='0' && _ch<='9'){_a=(_a<<1)+(_a<<3)+_ch-'0';_ch=getchar();}
     10     if(f)_a=-_a;
     11 }
     12 const int maxn = 300;    
     13     
     14 struct bign{    
     15     int d[maxn], len;    
     16     void clean() { while(len > 1 && !d[len-1]) len--; }    
     17     
     18     bign()    { memset(d, 0, sizeof(d)); len = 1; }    
     19     bign(int num)     { *this = num; }     
     20     bign(char* num) { *this = num; }    
     21     bign operator = (const char* num){    
     22     memset(d, 0, sizeof(d)); len = strlen(num);    
     23     for(int i = 0; i < len; i++) d[i] = num[len-1-i] - '0';    
     24     clean();    
     25     return *this;    
     26     }    
     27     bign operator = (int num){    
     28     char s[20]; sprintf(s, "%d", num);    
     29     *this = s;    
     30     return *this;    
     31     }    
     32     
     33     bign operator + (const bign& b){    
     34     bign c = *this; int i;    
     35     for (i = 0; i < b.len; i++){    
     36     c.d[i] += b.d[i];    
     37     if (c.d[i] > 9) c.d[i]%=10, c.d[i+1]++;    
     38     }    
     39     while (c.d[i] > 9) c.d[i++]%=10, c.d[i]++;    
     40     c.len = max(len, b.len);    
     41     if (c.d[i] && c.len <= i) c.len = i+1;    
     42     return c;    
     43     }    
     44     bign operator - (const bign& b){    
     45     bign c = *this; int i;    
     46     for (i = 0; i < b.len; i++){    
     47     c.d[i] -= b.d[i];    
     48     if (c.d[i] < 0) c.d[i]+=10, c.d[i+1]--;    
     49     }    
     50     while (c.d[i] < 0) c.d[i++]+=10, c.d[i]--;    
     51     c.clean();    
     52     return c;    
     53     }    
     54     bign operator * (const bign& b)const{    
     55     int i, j; bign c; c.len = len + b.len;     
     56     for(j = 0; j < b.len; j++) for(i = 0; i < len; i++)     
     57     c.d[i+j] += d[i] * b.d[j];    
     58     for(i = 0; i < c.len-1; i++)    
     59     c.d[i+1] += c.d[i]/10, c.d[i] %= 10;    
     60     c.clean();    
     61     return c;    
     62     }    
     63     bign operator / (const bign& b){    
     64     int i, j;    
     65     bign c = *this, a = 0;    
     66     for (i = len - 1; i >= 0; i--)    
     67     {    
     68     a = a*10 + d[i];    
     69     for (j = 0; j < 10; j++) if (a < b*(j+1)) break;    
     70     c.d[i] = j;    
     71     a = a - b*j;    
     72     }    
     73     c.clean();    
     74     return c;    
     75     }    
     76     bign operator % (const bign& b){    
     77     int i, j;    
     78     bign a = 0;    
     79     for (i = len - 1; i >= 0; i--)    
     80     {    
     81     a = a*10 + d[i];    
     82     for (j = 0; j < 10; j++) if (a < b*(j+1)) break;    
     83     a = a - b*j;    
     84     }    
     85     return a;    
     86     }    
     87     bign operator += (const bign& b){    
     88     *this = *this + b;    
     89     return *this;    
     90     }    
     91     
     92     bool operator <(const bign& b) const{    
     93     if(len != b.len) return len < b.len;    
     94     for(int i = len-1; i >= 0; i--)    
     95     if(d[i] != b.d[i]) return d[i] < b.d[i];    
     96     return false;    
     97     }    
     98     bool operator >(const bign& b) const{return b < *this;}    
     99     bool operator<=(const bign& b) const{return !(b < *this);}    
    100     bool operator>=(const bign& b) const{return !(*this < b);}    
    101     bool operator!=(const bign& b) const{return b < *this || *this < b;}    
    102     bool operator==(const bign& b) const{return !(b < *this) && !(b > *this);}    
    103     
    104     string str() const{    
    105     char s[maxn]={};    
    106     for(int i = 0; i < len; i++) s[len-1-i] = d[i]+'0';    
    107     return s;    
    108     }    
    109 };
    110 
    111 int k,w,deg,maxx;
    112 bign f[1<<10],sum[1<<10],ans;
    113 
    114 int main()
    115 {
    116     read(k); read(w);
    117     deg=(1<<k)-1;
    118     for (register int i=0;i<=deg;++i) f[i]=1;
    119     while(w>=k)
    120     {
    121         w-=k;
    122         if(w>=k) maxx=deg;
    123             else maxx=(1<<w)-1;
    124         for (register int i=deg;i;--i) sum[i]=sum[i+1]+f[i];
    125         for (register int i=1;i<=maxx;++i) f[i]=sum[i+1],ans+=f[i];
    126     }
    127     printf("%s",ans.str().begin());
    128     return 0;
    129 }
    View Code

     

     

    描述

    设r是个2^k 进制数,并满足以下条件:
    (1)r至少是个2位的2^k 进制数。

    (2)作为2^k 进制数,除最后一位外,r的每一位严格小于它右边相邻的那一位。

    (3)将r转换为2进制数q后,则q的总位数不超过w。

    在这里,正整数k(1≤k≤9)和w(k<W≤30000)是事先给定的。

    问:满足上述条件的不同的r共有多少个?
    我们再从另一角度作些解释:设S是长度为w 的01字符串(即字符串S由w个“0”或“1”m组成),S对应于上述条件(3)中的q。将S从右起划分为若干个长度为k 的段,每段对应一位2^k进制的数,如果S至少可分成2段,则S所对应的二进制数又可以转换为上述的2^k 进制数r。

    例:设k=3,w=7。则r是个八进制数(23=8)。由于w=7,长度为7的01字符串按3位一段分,可分为3段(即1,3,3,左边第一段只有一个二进制位),则满足条件的八进制数有:
    2位数:高位为1:6个(即12,13,14,15,16,17),高位为2:5个,…,高位为6:1个(即67)。共6+5+…+1=21个。

    3位数:高位只能是1,第2位为2:5个(即123,124,125,126,127),第2位为3:4个,…,第2位为6:1个(即167)。共5+4+…+1=15个。

    所以,满足要求的r共有36个。

    格式

    输入格式

    输入文件只有1行,为两个正整数,用一个空格隔开:
    k W

    输出格式

    输出文件为1行,是一个正整数,为所求的计算结果,即满足条件的不同的r的个数(用十进制数表示),要求最高位不得为0,各数字之间不得插入数字以外的其他字符(例如空格、换行符、逗号等)。

    (提示:作为结果的正整数可能很大,但不会超过200位)

    样例1

    样例输入1

    3 7

    样例输出1

    36

    限制

    1s

    转载于:https://www.cnblogs.com/jaywang/p/7689753.html

    展开全文
  • 出现1次出现k

    2020-01-12 12:41:47
    算法描述:因为k个k进制的数做不进位加法相加为0,例如:2进制,1+1=10,如果不进位的话为0。 所以将十进制转化为k进制,做不进位加法,得到结果,最后再将k进制转化为10进制。 代码如下: public class Test5 { ...
  • 故我们可以将所有的数转化成为K进制,然后做K进制的不进位加法,得出的结果再从K进制转换为10进制。 代码实现 public class _07出现k次出现1次 { public static void main(String[] args) {
  • 解题的突破口:利用k个K进制的数进行不进位加法,结果是 0 的结论 先把进制的数转为k进制,并采用字符串倒序存储 用除k取余法(通用的计算方法),将数组中的数转为k进制数。 因为转化为k进制后要按位(列)进行...
  • 1.利用技巧性结论:k个k进制的数进行不进位加法,每一位的和均为0。先把进制的数转为k进制。 2.转化为k进制后要按位(列)进行计算,所以要用二维数组的形式储存。转化为k进制后由于数的大小不同,长度也有可能...
  • 计算机组成原理—数据计算进制转换任意进制与十进制转换十进制转化为任意进制222进制转化为2n2^n2nBCD码余三码数据校验奇偶校验奇校验偶校验海明码循环冗余校验码定点数表示定点数运算补码加减运算溢出判断 ...
  • poj解题报告——1023

    2015-08-01 13:55:50
    十进制转化为二进制变形。 已知十进制非负整数n,假设二进制数字k位,转化为二进制为如下规则: ...现在规定二进制的权值发生了改变,改变规则为限定k位二进制数字,用字符‘p’表示该位原二进制权值相同,即为
  • 解析(1)444(5)=452+451+450=124, 再将十进制数124化为四进制数: 所以124=...将k进制转化为十进制的方法技巧 (1)先将这个k进制数写成各位上的数字与k的幂的乘积之和的形式,再按照十进制数的运算规则计算出结果.如:anan
  • 位运算应用

    2021-02-01 00:21:24
    3.把一个十进制转化为一个十六进制数(右移位,位) 4.将二进制数中最后1置0(减一,位) 5.将二进制数中最后0置1(取反,减一,位) 6.统计二进制数中1个数(减一,位) 7.加密解密(两次,...
  • 明若清溪天下绝歌 缱绻成说,不知该在哪处着墨;一生情深怎奈何世事 徒留斑驳,只...两个密码均是不大于63的十进制整数,将其转化为八位二进制数后对应位进行“”运算(运算规则是:当两个位均为“1”时,结果为...
  • 这个题目当时 想了挺长时间,走了不少岔路,一开始认为可以将二进制串转化十进制数,然后枚举k,这是不可行,因为二进制串长度太大了。 后来突然想到了,二进制只可能表示为 1 ,10,100,1000.....
  • 第一步,输入多项式次数n最高次项系数an和x值 第二步,将v值初始化为an将i值初始化为n-1 第三步,输入i次项系数ai 第四步,v=vx+ai,i=i-1 第五步,若i>=0,则返回第三步否则输出v 小结 K进位制转化十进制;...
  • 题意:给定正整数A,B,K问区间[A,B]之间有多少个数满足它本身是k的倍数且它各个十进制数位上数之和也是K的倍数。 典型数位DP。对于区间计数问题,一般都是将区间先转化为左边界为1,设区间[A...
  • 状压dp就是将一个状态压缩成一个十进制数,再进行状态转移。一般是把一行数据按照合适进制转化为一个整数。1、一般来说需要先预处理出来所有可行状态,判断可行可以用位运算对状态进行操作。2、然后预处理出第一...
  • 若集合大小不超过N,集合中每个元素都是小于K自然数,则我们可以把这个集合看作一个N位K进制数,以一个[0,KN-1]之间的的十进制整数形式作为DP状态一维。这种把集合转化为整数记录在DP状态中一类
  • C C++算法实例.c

    2009-04-02 10:07:08
    设计一个程序,读入一个十进制基数和一个负进制数基数,并将此十进制数转换为此负 进制下数:-R∈{-2,-3,-4,....-20} 八 全排列组合生成 1.排列生成:(1..n) 2.组合生成(1..n中选取k个数...
  • 开发人员在测试组环境多次重复以上步骤,发现11群计次表话单有时正常,有时其出中继群号就为一个随机值,发生异常频率比较高。为什么其它群话单正常,唯独11群不正常呢?11群是四个群中最小群,其中继计...
  • 设备驱动程序和服务许多参数都是此类型,以二进制、十六进制或十进制格式显示在注册表编辑器中。之有关值是 DWORD_LITTLE_ENDIAN(最不重要字节在最低位地址)和 REG_DWORD_BIG_ENDIAN(最不重要字节在...
  • 易语言540个易模块

    2009-05-02 14:48:40
    十进制转化为十六进制5 十六进制转十进制模块 时间格式化-自由扩展型 世恒通用安装系统文件压缩模块 是否为汉字 输入法操作模块 输入法上屏 鼠标控制 树型框操作类 树型框增强 数据库查找 数据库到超级列表框 ...
  • ACM算法模板和pku代码

    2010-11-09 16:15:16
    十进制转负进制 归并排序求逆序数 Pell方程 Catalan数,100以内 欧拉函数讲解 组合计数 组合数计算(double) 组合数计算(高精度) r-组合生成算法 r-排列生成算法 r-错位排列生成算法 图论 传递闭包 欧拉...
  • 数据结构(C++)有关练习题

    热门讨论 2008-01-02 11:27:18
    D. *建立函数create:根据一维数组a[n]建立一个单链表,使单链表中各元素次序a[n]中各元素次序相同,要求该程序时间复杂度为O(n)。 E. *整理函数tideup:在非递减有序单链表中删除值相同多余...
  • 1-9 请将以下十进制数值转换为二进制和十六进制补码: (1)2 (2)9 (3)93 (4)-32 (5)65535 (6)-1 解: (1) (2)10 = (10)2 = (2)16 (2) (9)10 = (1001)2 = (9)16 (3) (93)10 = ...

空空如也

空空如也

1 2 3
收藏数 41
精华内容 16
关键字:

十进制与k进制的转化