HDU 1335 Basically Speaking

来源:互联网 发布:java 深度遍历 编辑:程序博客网 时间:2024/06/06 14:25

http://acm.hdu.edu.cn/showproblem.php?pid=1335

 

Basically Speaking

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K(Java/Others)
Total Submission(s): 962 Accepted Submission(s):437


Problem Description
The Really Neato Calculator Company,Inc. has recently hired your team to help design their Super NeatoModel I calculator. As a computer scientist you suggested to thecompany that it would be neato if this new calculator could convertamong number bases. The company thought this was a stupendous ideaand has asked your team to come up with the prototype program fordoing base conversion. The project manager of the Super Neato ModelI calculator has informed you that the calculator will have thefollowing neato features:
It will have a 7-digit display.

Its buttons will include the capital letters A through F inaddition to the digits 0 through 9.

It will support bases 2 through 16.


 

Input
The input for your prototype programwill consist of one base conversion per line. There will be threenumbers per line. The first number will be the number in the baseyou are converting from. The second number is the base you areconverting from. The third number is the base you are convertingto. There will be one or more blanks surrounding (on either sideof) the numbers. There are several lines of input and your programshould continue to read until the end of file isreached.


 

Output
The output will only be the convertednumber as it would appear on the display of the calculator. Thenumber should be right justified in the 7-digit display. If thenumber is to large to appear on the display, then print "ERROR''(without the quotes) right justified in the display.


 

Sample Input
1111000 210 1111000 2 16 2102101 3 10 2102101 3 15 12312 4 2 1A 15 2 123456710 16 ABCD 16 15


 

Sample Output
120 78 17657CA ERROR 11001 12D687 D071


 

Source
Mid-Central USA 1995


 

Recommend
Ignatius.L
 
题目分析:前面是一个7位的a进制数,转换成后面的进制输出,如果超过7位输出ERROR
分析:进制转换。
代码如下:
#include<iostream>
#include<string>
#include<math.h>
using namespace std;
int fun1(int,int);  //将一个10进制的数转换成要求的进制
intfun2(int);      //将一个已知进制的数转换成10进制
chars[8];          //保存输入的数据
intx[8];          //保存输出的数据
int main()
{
 int m,n,len; 
 int t,l,i;
 while(cin>>s)
 {
  len=strlen(s);
  cin>>m>>n;
  t=fun2(m);
  //printf("s=%s m=%d n=%dt=%d\n",s,m,n,t);
  if(fun1(t,n)==-1)cout<<" ERROR"<<endl;
  else
  {
   l=fun1(t,n);
   for(i=7-l;i>0;i--)
    cout<<'';
   for(i=l-1;i>=0;i--)
   {
    if(x[i]>=10)
     printf("%c",x[i]-10+'A');         //这个地方还是用printf好一点。。
    else
     printf("%d",x[i]);
   }
   cout<<'\n';
  }
  memset(s,'\0',sizeof(s));
  memset(x,'\0',sizeof(x));
 }
 return 0;
}
int fun1(int t,int m)
{
 int i=0;
 while(t)
 {
  x[i++]=t%m;
  t=t/m;
  if(i==8) return -1;
 }
 return i;
}
int fun2(int m)
{
 int len=strlen(s);
 int i,t=0;
 for(i=len-1;i>=0;i--)
 {
  if(s[i]>='A')
   s[i]=s[i]-'A'+10;
  else
   s[i]=s[i]-'0';
  t+=s[i]*pow(m,len-1-i);
 }
 return t;
}
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 腰间盘突出压迫神经腿疼怎么办 肺热引起的发烧怎么办 肺热引起的痘痘怎么办 冰箱压条的霉点怎么办 白色的布鞋变黄怎么办 白鞋橡胶变黄了怎么办 肝功能检查总胆汁酸高怎么办 吃丹参滴丸尿血怎么办 胰酶消化过久怎么办 抗凝血酶活性低怎么办 抗凝血酶3偏低怎么办 抗凝血酶ⅲ低 怎么办 抗凝血酶3抗原高怎么办 孕32周血压高怎么办 智齿血凝块掉了怎么办 入职体检alt偏高怎么办 剖腹产后crp值高怎么办 超敏c反应蛋白偏高怎么办 孕妇c反应蛋白高怎么办 婴儿超敏crp偏高怎么办 小孩c反应蛋白高怎么办 发烧c反应蛋白高怎么办 孕妇快生了贫血怎么办 小孩吃糖牙齿痛怎么办 前门牙掉了一块怎么办 吃冷东西牙疼怎么办 吃甜的立刻牙疼怎么办 吃甜的牙疼怎么办 孕妇甲功t4偏低怎么办 得了肝内钙化灶怎么办 喝了除垢剂的水怎么办 喝甘露醇后吐了怎么办 文玩核桃盘黑了怎么办 尿酸高了50点怎么办 尿蛋白4个加号怎么办 24小时尿蛋白高怎么办 孕妇尿蛋白2加号怎么办 孕妇尿白细胞2是怎么办 孕妇尿蛋白质2是怎么办 入职体检心跳快怎么办 怀孕尿潜血3是怎么办