首页 > 其他 > 详细

百练 2972 确定进制 解题报告

时间:2014-03-17 06:12:33      阅读:546      评论:0      收藏:0      [点我收藏+]

思路:选择一个进制B,按照该进制将被乘数,乘数,乘积分别转换成10进制,然后判断等式是否相等。输出使得等式相等的最小的B即为所求。

代码:

bubuko.com,布布扣
#include<stdio.h>
#include<string.h>

long b2ten(char *x, int b)
{
    int ret = 0;
    int len = strlen(x);
    for(int i = 0; i < len; i++)
    {
        if(x[i] - 0 >= b)
            return -1;
        ret *= b;
        ret += x[i] - 0;
    }
    return (long)ret;
}
int main()
{
    int n, b;
    char p[8], q[8], r[8];
    long pval, qval, rval;

    scanf("%d", &n);
    while(n--)
    {
        scanf("%s%s%s", p, q ,r);
        for(b = 2; b <=16; b++)
        {
            pval = b2ten(p, b);
            qval = b2ten(q, b);
            rval = b2ten(r, b);
            if(pval == -1 || qval == -1 || rval == -1)
                continue;
            if(pval * qval == rval)
            {
                printf("%d\n", b);
                break;
            }
        }
        if(b == 17)
            printf("0\n");
    }
    return 0;

}
bubuko.com,布布扣

百练 2972 确定进制 解题报告,布布扣,bubuko.com

百练 2972 确定进制 解题报告

原文:http://www.cnblogs.com/la0bei/p/3603303.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!