Codeforces Round #333 (Div. 2) A. Two Bases

来源:互联网 发布:大富豪源码 编辑:程序博客网 时间:2024/05/17 02:53

题目链接:http://codeforces.com/contest/602/problem/A

这道题要求你比较两个不同进制数的大小。

6 2

1 0 1 1 1 1

2 10

4 7

前两行描述第一个数:2表示这个数是二进制数,6表示这个数有6位,第二行描述这个数的各个位的具体信息。

后两行描述第二个数:10表示这个数是十进制数,2表示这个数有2位,第四行描述这个数的各个位组成。

 

分析:

理论上的最大值是10位的40进制数,也就是10940进制数,化为十进制是2419790769230769。最多不超过long long.

思路就是把两个数都换成是十进制数,直接比较。

附一份代码:
  

#include <bits/stdc++.h>int main(){    int n, m;    while(~scanf("%d %d", &n, &m))    {        int tmp;        long long sum1=0, sum2=0;        for(int i=0; i<n; i++)        {            scanf("%d", &tmp);            sum1 = sum1*m + tmp;        }        printf("%lld\n", sum1);        scanf("%d%d", &n, &m);        for(int i=0; i<n; i++)        {            scanf("%d", &tmp);            sum2 = sum2*m + tmp;        }        if(sum1 == sum2)            printf("=\n");        else if(sum1 > sum2)            printf(">\n");        else            printf("<\n");    }    return 0;}


0 0