zoukankan      html  css  js  c++  java
  • POJ 1220 高精度/进制转换

    n进制转m进制,虽然知道短除法但是还是不太理解,看了代码理解一些了:

    记住这个就好了:

    for(int k=0;l; ){
        for(int i=l ; i>=1 ; i--){
            num[i - 1] += num[i] % m * n;
            num [i] / =m;
            }
            num1[k++]=num[0] % m;
            num[0] /= m;
            while( l > 0&& num[ l - 1]==0) l--;
    }
    

    AC代码如下:

    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    #include<map>
    #include<iostream>
    using namespace std;
    const int maxn=1200;
    map<char,int> no;
    map<int,char> output;
    int num[maxn],num1[maxn];
    char s[maxn];
    int main(){
    	for(int i='0',j=0;i<='9';i++,j++)
    		no[i]=j,output[j]=i;
    	for(int i='A',j=10;i<='Z';i++,j++)
    		no[i]=j,output[j]=i;
    	for(int i='a',j=36;i<='z';i++,j++){
    		no[i]=j,output[j]=i;
    	}
    	int n,m,k,t;
    	cin>>t;
    	while(t--){
    		cin>>n>>m;
    		scanf("%s",s);
    		int l=strlen(s);
    		for(int i=0;i<l;i++){
    			num[l-i-1]=no[s[i]];
    		}
    		for(k=0;l;){
    			for(int i=l;i>=1;i--){
    				num[i-1]+=num[i]%m*n;
    				num[i]/=m;
    			}
    			num1[k++]=num[0]%m;
    			num[0]/=m;
    			while(l>0&&num[l-1]==0)l--;
    		}
    		printf("%d ",n);
    		printf("%s\n",s);
    		printf("%d ",m);
    		for(int i=k-1;i>=0;i--)
    			printf("%c",output[num1[i]]);
    		cout<<"\n"<<endl;
    	}
    	
    } 
    

      

  • 相关阅读:
    VS2010 添加项目依赖
    人工鱼群算法 AFSA
    粒子群算法 PSO
    CUDA速度测试
    AGSO 萤火虫算法
    用于WTL工具栏的辅助类CToolBarHelper
    关于结构体内存对齐
    遗传算法 GA
    A*算法
    人工蜂群算法 ABC
  • 原文地址:https://www.cnblogs.com/pkgunboat/p/9315236.html
Copyright © 2011-2022 走看看