栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

zoj 1238 Guess the Number

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

zoj 1238 Guess the Number

#include<iostream>#include<cmath>#include<string>#include<map>using namespace std;#define EPS 1e-6namespace{string& remove_leading_zero(string &s){while (s[0] == '0')s.erase(0, 1);return s;}pair<string, int> divide(const string &s, int n){if (s == "0")return make_pair("0", 0);string t = "0";int rem = 0;for (size_t i = 0; i < s.size(); i++){rem = rem * 10 + (s[i] - '0');t += (rem / n + '0');rem = rem % n;}return make_pair(remove_leading_zero(t), rem);}}int main(){map<size_t, int> M;for (int i = 3; i <= 100000; i++){double d = i * log10(i);size_t t = (size_t) (d + 1 + EPS);M[t] = i;}int T;string s;cin >> T >> ws;while (T--){cin >> s;if (s.size() == 1){if (s == "1")cout << 1 << endl;else if (s == "4")cout << 2 << endl;elsecout << -1 << endl;}else{int N = M[s.size()];pair<string, int> p = divide(s, N);bool can = true;int count = 0;while (p.first != "1"){if (count++ == 3)break;if (p.second != 0){can = false;break;}p = divide(p.first, N);}cout << (can ? N : -1) << endl;}}return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/376511.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号