题目链接: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进制数,也就是10个9的40进制数,化为十进制是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;
}