| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 630 人关注过本帖, 1 人收藏
标题:数制转换的题,查不出错来。。大家帮忙看下。。谢谢
取消只看楼主 加入收藏
宅宅
Rank: 1
等 级:新手上路
帖 子:27
专家分:9
注 册:2013-9-25
结帖率:92.86%
收藏(1)
已结贴  问题点数:16 回复次数:1 
数制转换的题,查不出错来。。大家帮忙看下。。谢谢
。。检查了两个周都没看出来哪错了,两个隐藏用例过不了


我们通常使用的都是十进制的数字,但其实在生活中也经常会使用其它进制。

这个题目会给你两个不同的数字,它们不属于同一进制,要求你计算出当它们分别处于何种进制之中时,两个数字相等。譬如 12 和 5 ,在十进制下它们是不等的,但若 12 使用 3 进制而 5 使用六进制或十进制时,它们的值就是相等的。因此只要选择合适的进制, 12 和 5 就可以是相等的。

程序的输入是两个数字 M 和 N( 其十进制的值不超过 1000000000) ,它们的进制在 2~36 之间。对于十以下的数字,用 0~9 表示,而十以上的数字,则使用大写的 A~Z 表示。

求出分别在 2~36 哪种进制下 M 和 N 相等。若相等则输出相应的进制,若不等则输出错误信息。当然了,对于多种可能成立的情况,找出符合要求的进制最小的一组就行了。信息的格式见测试用例。
例:
输入:12 5
输出:12 (base 3) = 5 (base 6)
输入:123 456
输出:123 is not equal to 456 in any base 2..36


程序代码:
#include<stdio.h>
#include<stdlib.h>
int cf(int m,int n)
{
    int i,d=1;
for(i=1;i<=n;i++)
d=d*m;
return (d);
} 

main()
{
  int a[30]={0},i,c,b[30]={0},n=0,m=0,max1=0,max2=0,d,sum1=0,sum2=0;
  char e[30],f[30];
  for(i=0;c!=' ';i++)//空格时结束循环
               {
               scanf("%c",&e[i]); //输入字符 
               c=e[i];
               a[i]=e[i]; //保存ASCII码
               n++;
               }
  n--; //输入的字符的数量 
  c=0;
  gets (f); //输入字符 
  for(i=0;f[i]!='\0';i++)
                         {
                         b[i]=f[i]; //ASCII码 
                         m++; //字符数量 
                         }
    for(i=0;i<=n-1;i++)
  {
                       if(a[i]>=48&&a[i]<=57) a[i]=a[i]-48;
                         else if(a[i]>=65&&a[i]<=90) a[i]=a[i]-55;
                              else a[i]=0;
  }//把a[i]变成每一位代表的数字 
  for(i=0;i<=m-1;i++)
  {
                     if(b[i]>=48&&b[i]<=56) b[i]=b[i]-48;
                          else if(b[i]>=65&&b[i]<=90) b[i]=b[i]-55;
                               else b[i]=0;
  }//把b[i]变成每一位代表的数字
  for(i=0;i<=n-1;i++)
                     if (a[i]>max1) max1=a[i];
  for(i=0;i<=m-1;i++)
                     if (b[i]>max2) max2=b[i]; //求最大值以确定最小进制 
  for(c=max1+1;c<=36;c++)
     {  
        sum1=0;
        for(d=0;d<=n-1;d++) sum1=sum1+a[d]*cf(c,n-1-d);//转化为10进制 
     for(i=max2+1;i<=36;i++)
        {
         sum2=0;
         for(d=0;d<=m-1;d++) sum2=sum2+b[d]*cf(i,m-1-d);//转化为10进制 
                            if(sum1==sum2) 
                                           {
                                            for (d=0;d<=n-1;d++) 
                                               printf("%c",e[d]); 
                                            printf(" (base %d) = ",c);
                                            d=0;
                                            while(f[d]==' ') d++;
                                            for (;d<=m-1;d++) 
                                                printf("%c",f[d]);
                                            printf(" (base %d)\n",i);
                                            goto k;
                                           } 
                            if(c==36&&i==36&&sum1!=sum2) 
                                                         {
                                                          for (i=0;i<=n-1;i++) 
                                                              printf("%c",e[i]); 
                                                          printf(" is not equal to ");
                                                          i=0;
                                                          while(f[i]==' ') i++;
                                                          for (;i<=m-1;i++) 
                                                              printf("%c",f[i]);
                                                          printf(" in any base 2..36\n");
                                                          goto k;
                                                         }
        } //输出结果 
     }
k:system("pause");
}
搜索更多相关主题的帖子: 十进制 
2013-11-07 11:12
宅宅
Rank: 1
等 级:新手上路
帖 子:27
专家分:9
注 册:2013-9-25
收藏
得分:0 
虽然到最后也没弄明白- -
2013-11-12 15:48
快速回复:数制转换的题,查不出错来。。大家帮忙看下。。谢谢
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.034955 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved