题目描述
小T学完了进制转换,觉着特别神气,这不?要求出一个进制转换的问题考考他。
问题是这样的:写下一个10进制数N和B进制数M,已知M是N转成的B进制数,求B是多少?
输入
两个数N和M。(N<=20亿)
输出
一个整数B(B保证不超过20,且大于1),如果有多个答案正确,则按从小到大顺序输出20以内的答案,每行一个。
样例
输入 复制
6 110
输出 复制
2
提示
题目描述
小T学完了进制转换,觉着特别神气,这不?要求出一个进制转换的问题考考他。
问题是这样的:写下一个10进制数N和B进制数M,已知M是N转成的B进制数,求B是多少?
输入
两个数N和M。(N<=20亿)
输出
一个整数B(B保证不超过20,且大于1),如果有多个答案正确,则按从小到大顺序输出20以内的答案,每行一个。
样例
输入 复制
6 110
输出 复制
2
提示
收起
#include<iostream>
int To10(const std::string & num, int radix)
{
int result = 0;
int temp = 1;
for (auto iter = num.rbegin(); iter != num.rend(); ++iter)
{
result += (*iter - '0') * temp;
temp *= radix;
}
return result;
}
int main()
{
int n;
std::string m;
std::cin >> n >> m;
for (int b = 2; b <= 20; ++b)
{
if (To10(m, b) == n)
std::cout << b << std::endl;
}
return 0;
}
如果有帮助请采纳,有问题继续交流
[Warning] 'auto' changes meaning in C++11; please remove it [-Wc++0x-compat]
报告相同问题?