数学问题-进制转换

模板:

struct nlist{
    vector<int> v;
    int r;
    nlist(){}
    nlist(string s,int r):r(r){
        for(int i=0;i<s.size();i++){
            v.push_back(s[i]-48);
        }
    }
    print(){
        for(int i=0;i<v.size();i++){
            printf("%d ",v[i]);
        }
        puts("");
    }
}; 

void converse(const nlist& a,nlist& b,int r){
    int mul=1,i,sum=0,t;
    for(i=a.v.size()-1;i>=0;i--){
        sum+=mul*a.v[i];
        mul*=a.r;
    }
    while(sum){
        t=sum%r;
        b.v.push_back(t);
        sum/=r;
        i++;
    }
    reverse(b.v.begin(),b.v.end());
}


1.负数的进制

#include <stdio.h>
#include <memory.h>
#include <math.h>
#include <string.h>
#include <string>
#include <vector>
#include <set>
#include <stack>
#include <queue>
#include <algorithm>
#include <map>

#define I scanf
#define OL puts
#define O printf
#define F(a,b,c) for(a=b;a<c;a++)
#define FF(a,b) for(a=0;a<b;a++)
#define FG(a,b) for(a=b-1;a>=0;a--)
#define LEN 100
#define MAX 0x06FFFFFF
#define V vector<int>

using namespace std;

int main(){
//    freopen("进制转换.txt","r",stdin);
    int n,r;
    I("%d%d",&n,&r);
    printf("%d",n);
    string ans;
    while(n){
        int t=n%r;
        n/=r;
        if(t<0){
            t-=r;
            n+=1;
        }
        if(t>9){
            ans+=‘A‘+t-10;
        }else{
            ans+=‘0‘+t;
        }
    }
    reverse(ans.begin(),ans.end());
    printf("=%s(base%d)",ans.c_str(),r);
    return 0;

}

原文地址:https://www.cnblogs.com/TQCAI/p/8453951.html

时间: 2024-11-08 08:19:54

数学问题-进制转换的相关文章

HDU 4937 Lucky Number (数学,进制转换)

题目 参考自博客:http://blog.csdn.net/a601025382s/article/details/38517783 //string &replace(iterator first0, iterator last0,const_iterator first, const_iterator last); //把[first0,last0)之间的部分替换成[first,last)之间的字符串 /* 题意: 我们将3,4,5,6认为是幸运数字.给定一个十进制数n. 现在可以讲起任意转

数学运算高级工具bc:小数精度;进制转换;计算平方及平方根

bc是一个用于数学运算的高级工具,包含了大量选项,可以借助它执行浮点数运算并应用一些高级函数: [[email protected] ~]# echo 3*2.12 | bc 6.36 [[email protected] ~]# n=54 [[email protected] ~]# m=`echo "$n*1.5" | bc` [[email protected] ~]# echo $m 81.0 [[email protected] ~]# 其他二代参数可以放在要执行的具体操作前

CodeForces 1B-字符串,进制转换与数学

一个萌新的成长之路 Background 同学们都回家了,只有我和wjh还有邢神在机房敲代码,吃random口味的方便面-- Description Translated by @PC_DOS from luogu In the popular spreadsheets systems (for example, in Excel) the following numeration of columns is used. The first column has number A, the se

HDU4814——数学,模拟进制转换

本题围绕:数学公式模拟进制转换 HDU4814 Golden Radio Base 题目描述 将一个十进制的非负整数转换成E(黄金分割数)进制的数 输入 不大于10^9的非负整数,处理到文件尾 输出 转换成的E进制数(可能含有小数) 样例输入 1 2 3 6 10 样例输出 1 10.01 100.01 1010.0001 10100.0101 题目分析 对于本题,要注意的点有:首先对于一个十进制的正数,我们是可以严格转换成一个E(黄金分割数)进制的数的,而不是涉及到约等于,例如10-base的

NOIP2000 进制转换

题一   进制转换              (18分)  问题描述      我们可以用这样的方式来表示一个十进制数: 将每个阿拉伯数字乘以一个以该数字所处位置的(值减1)为指数,以10为底数的幂之和的形式.例如:123可表示为 1*102+2*101+3*100这样的形式. 与之相似的,对二进制数来说,也可表示成每个二进制数码乘以一个以该数字所处位置的(值-1)为指数,以2为底数的幂之和的形式.一般说来,任何一个正整数R或一个负整数-R都可以被选来作为一个数制系统的基数.如果是以R或-R为基

进制转换(负进制) Luogu 1017

最近匆忙刷题,突然发现自己数学废掉了 ,居然忘了进制转换了QAQ~,后来我身边的王大佬又教了我一遍. 进制转换多数用的是短除法(别人是这么叫的),就是除以进制数后,记录余数,一直除到零为止,然后把记录的余数倒序输出,10及以上的用A.B等字母表示.然而如果遇到负进制(******),就应考虑到余数为负数的情况,例如:-3 mod -2 = -1 ,这时,就应该给这个余数加上进制数的绝对值,同时将整除得到的数加上现在的余数,为了保证计算的正确性,因为我们给余数加了进制数,就相当于做除法时 被除数

JAVA之旅(一)——基本常识,JAVA概念,开发工具,关键字/标识符,变量/常量,进制/进制转换,运算符,三元运算

JAVA之旅(一)--基本常识,JAVA概念,开发工具,关键字/标识符,变量/常量,进制/进制转换,运算符,三元运算 Android老鸟重新学一遍JAVA是什么感觉?枯燥啊,乏味啊,而且归纳写博客,都是很痛苦的事情,但是程序之路这么长,你必须精通的不能再精通一门语言才行(有点说大了哈),但是最起码你要如鱼得水吧,我准备的资料有: JAVA编程思想 深入浅出JAVA 黑马,传智,慕课,极客学院等-的视频 Google搜索 我们既然是重新学一遍,那我们尽量就是用记事本去敲代码好了,这里我用notep

Linux命令之bc - 浮点计算器、进制转换

用途说明 Bash内置了对整数四则运算的支持,但是并不支持浮点运算,而bc命令可以很方便的进行浮点运算,当然整数运算也不再话下.手册页上说bc是An arbitrary precision calculator language,即一个任意精度的计算语言,注意是一种语言,它提供了一些语法结构,比如条件判断.循环等,可以说是很强大的,但是我在实际中还没有找 到需要这个用途的场合 .另外一个用途就是用来进行进制转换. 常用参数 一般情况下,我们使用不带任何参数的bc命令. bc 如果需要bc不输出提

补习中-进制转换

最近忽然起兴,在看一些程序,但是一堆16进制代码看的我脑袋晕头转向.. 没办法,底子太薄,开始补习吧! 先说10进制转换成2进制 比如42想转换成2进制,那就把42一直拿2往下除,除到商为0 42/2 = 21余0 21/2 = 10余1 10/2 =  5余0 5/2 =  2余1 2/2 =  1余0 1/0 =  0余1 从下往上写为 00101010 1前面那两个0是补位的..没什么用途. 想转成10进制也很简单, ^ 这个是幂的符号吧= =.  数学好长时间没学,早忘光了... 幕的个