2009-01-23 19:48:11來源不明
ACM 10473 Simple Base Conversion
藉由大數進位的方法推到16進位。
/*************************************************************/
- #include<stdio.h>
- #include<stdlib.h>
- #include<string.h>
- main()
- {
- char x[100];
- int a,b,c;
- while(gets(x))
- {
- if(x[0]=='-') break;
- if(x[0]=='0'&&x[1]=='x')
- {
- int sum=0,temp=1;
- for(a=strlen(x)-1;a>=2;a--)
- {
- if(x[a]>='A')
- sum=sum+temp*(x[a]-55);
- else
- sum=sum+temp*(x[a]-48);
- temp=temp*16;
- }
- printf("%d\n",sum);
- }
- else
- {
- int temp=0,y[50]={0};
- for(a=0;a<strlen(x);a++)
- temp=temp*10+x[a]-48;
- y[0]=temp;
- for(a=0;a<50;a++)
- {
- if(y[a]>=16)
- {
- y[a+1]=y[a+1]+y[a]/16;
- y[a]=y[a]%16;
- }
- }
- printf("0x");
- for(a=49;a>=0;a--)
- {
- if(y[a]!=0)
- {
- for(b=a;b>=0;b--)
- {
- switch(y[b])
- {
- case 10:printf("A");break;
- case 11:printf("B");break;
- case 12:printf("C");break;
- case 13:printf("D");break;
- case 14:printf("E");break;
- case 15:printf("F");break;
- default:printf("%d",y[b]);
- }
- }
- break;
- }
- }
- printf("\n");
- }
- }
- return 0;
- }
上一篇:ACM 412 Pi