しんしんへんかんもんだい


10進法を任意のr進法に変換
入力:n(元の10進数)、r(r進数に変換)
出力:r進数

#include<stdio.h>
int main()
{
   int n,r,x,i,j,a[1000],h;
   while(scanf("%d%d",&h,&r)!=EOF){
       if(h<0)n=-h;
       else n=h;
   //     r  
   for(i=0;n!=0;i++)
   {
      x=n%r;
      a[i]=x;
      n=n/r;
   }
   //  :   2   
   if(h<0)printf("-");
   for(j=i-1;j>=0;j--)
   {
      if(a[j]==10)printf("A");
      else if(a[j]==11)printf("B");
      else if(a[j]==12)printf("C");
      else if(a[j]==13)printf("D");
      else if(a[j]==14)printf("E");
      else if(a[j]==15)printf("F");
      else printf("%d",a[j]);
   }
   putchar('
'); } return 0; }

10進数変換任意進数の長さ:
len=(int)ceil(n*log(m)/log(k));
m^n回k進数に変換する長さ
入力:m,n,k;
出力:k進数長

#include<stdio.h> 
#include<math.h> 
int main()
{	double m,n,k;
	int len; 
	while(scanf("%lf%lf%lf",&m,&n,&k)!=EOF)
	{  
		if(m==0&&n==0&&k==0)  break;
    	//len=(int)ceil(n*log(m)/log(k));
         len=n*log(m)/log(k);
		 len++;
 		printf("%d
",len); } return 0; }