zoukankan      html  css  js  c++  java
  • 九度 1138

    事实上主要的十进制转二进制方法我们都知道。就是循环模2。除2这两个过程。以下是一个大概的方法代码。

    while(n>0){
    	binary[count++] = n%2;
    	n = n/2;
    }

    这道题目就是把除和余的过程变成了大数上的除余。这里我从网上找到了一个博主的博客点击打开链接,他的大数除余写的非常简洁,也算学习借鉴了。这个博主大数的其它算法写的也非常不错。

    #include<stdio.h>
    #include<string.h>
    char data[40];
    char res[40];
    char sum[1000];
    int mod(){
    	 int mod=0,i;  
    	 for(i=0; i<strlen(data); i++)  
         {  
            mod=mod*10+data[i]-'0';            
            mod=mod%2;                
         } 
    	 return mod;
    }
    void div(){
    	    int divis=0,flag=0,i,k;  
                for(i=k=0; i<strlen(data); i++)                
                {  
                    divis=divis*10+data[i]-'0';  
                    if(divis>=2&&!flag)                
                    {  
                        res[k++]=divis/2+'0';  
                        divis=divis%2;                    
                        flag=1;  
                    }  
                    else if(flag)  
                    {  
    	 res[k++]=divis/2+'0';  
                        divis=divis%2;  
                    }  
                }  
                if(!k) res[k++]='0';  
    			res[k]=''; strcpy(data,res);
    }
    int main(){
    	int n,i;
    	
    	while(~scanf("%s",data)){
    		if(strcmp(data,"0")==0){
    			printf("0
    ");continue;
    		}
    		n=0;
    		while(strcmp(data,"0")!=0){
    			sum[n++]=mod();
    			div();
    		}
    		for(i=n-1;i>=0;i--){
    			printf("%d",sum[i]);
    		}
    		printf("
    ");
    	}
    	return 0;
    }
    


  • 相关阅读:
    DP_knapsack
    也谈交换两个变量
    SidebySide Assembly
    Generate permutation for N elements
    Pixel Shader 像素着色
    Drill into View Matrix
    使用D3DXCreateSphere绘图的步骤
    原来VisualStudio本身也可以查看调试信息
    DirectX Effects初探
    Shortcuts
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/7144300.html
Copyright © 2011-2022 走看看