zoukankan      html  css  js  c++  java
  • NUMBER BASE CONVERSION POJ

    给a进制下的x,求x的b进制表示

    考虑20(10)→(3)

    20/3=6余2,那么3^0位记录2,接下来考虑用3^1位表示6

    整体像是一个递归,把原数字不断除以b,每一轮余下的数字作为这个深度的余数

    最深一层也就是除以b最多的一层是最高阶的余数,按阶从高向下写余数就是b进制的x表示

    //#include<bits/stdc++.h>  
    //#pragma comment(linker, "/STACK:1024000000,1024000000")   
    #include<stdio.h>  
    #include<algorithm>  
    #include<queue>  
    #include<string.h>  
    #include<iostream>  
    #include<math.h>                    
    #include<set>  
    #include<map>  
    #include<vector>  
    #include<iomanip> 
    #include<bitset>
    using namespace std;         //
    
    #define ll long long  
    #define pb push_back  
    #define FOR(a) for(int i=1;i<=a;i++) 
    #define sqr(a) (a)*(a)
    #define dis(a,b) sqrt(sqr(a.x-b.x)+sqr(a.y-b.y))
    ll qp(ll a,ll b,ll mod){
    	ll t=1;while(b){if(b&1)t=t*a%mod;b>>=1;a=a*a%mod;}return t;
    }
    struct DOT{ll x;ll y;};
    inline void read(int &x){int k=0;char f=1;char c=getchar();for(;!isdigit(c);c=getchar())if(c=='-')f=-1;for(;isdigit(c);c=getchar())k=k*10+c-'0';x=k*f;} 
    const int dx[4]={0,0,-1,1};
    const int dy[4]={1,-1,0,0};
    const int inf=0x3f3f3f3f;  
    const ll mod=1e9+7;
    
    const int maxn=600;
    int n,a,b,ans[maxn],tmp[maxn];
    char buf[maxn];
    
    void work(){
    	int len=strlen(buf);
    	for(int i=len-1,m=0;i>=0;i--,m++){
    		if(buf[i]>='a'&&buf[i]<='z'){
    			tmp[m]=buf[i]-'a'+36;
    		}else if(buf[i]>='A' && buf[i]<='Z'){
    			tmp[m]=buf[i]-'A'+10;
    		}else{
    			tmp[m]=buf[i]-'0';
    		}
    	}
    	int k=0;
    	while(len){
    		for(int i=len-1;i;i--){
    			tmp[i-1]+=tmp[i]%b*a;
    			tmp[i]/=b;
    		}
    		ans[k++]=tmp[0]%b;
    		tmp[0]/=b;
    		for(;len>0 && !tmp[len-1];len--);
    	}
    	printf("%d %s
    %d ",a,buf,b);
    	for(int i=k-1;i>=0;i--){
    		if(ans[i]>=10 && ans[i]<36){
    			printf("%c",ans[i]-10+'A');
    		}else if(ans[i]>=36){
    			printf("%c",ans[i]-36+'a');
    		}else{
    			printf("%d",ans[i]);
    		}
    	}
    	puts("");puts("");
    }
    
    int main(){
    	scanf("%d",&n);
    	while(n--){
    		memset(ans,0,sizeof ans);
    		memset(tmp,0,sizeof tmp);
    		memset(buf,0,sizeof buf);
    		scanf("%d%d%s",&a,&b,buf);
    		work();
    	}
    }

  • 相关阅读:
    Jenkins发布.net core程序
    CentOS7部署Jenkins
    ASP.NET Core 中的响应缓存中间件
    浏览器缓存
    WEB缓存
    Jmeter常用插件——梯度加压、响应时间、TPS
    Jmeter压测报错:Non HTTP response code: java.net.ConnectExceptionexception的解决办法
    Linux如何安装rpm文件
    Prometheu---配置文件修改
    Grafana介绍---prometheus系列
  • 原文地址:https://www.cnblogs.com/Drenight/p/8611197.html
Copyright © 2011-2022 走看看