博客
关于我
hdu 6828 Little Rabbit‘s Equation 模拟
阅读量:361 次
发布时间:2019-03-04

本文共 2104 字,大约阅读时间需要 7 分钟。

文章目录

题目大意

给你一个算式,求算式最小是在几进制下运算得以成立

题目思路

写一个k进制转换10进制的函数

将式子中的3个数都从k进制转化成10进制,然后运算
从最小可能的进制跑到16,若成立,把最小的结果记录下来输出即可
注意题目要求进制最小为2
0+0=0这种情况下,答案应输出2

代码

#include 
using namespace std;typedef long long ll;char number[20];map
mp;ll to_digit(string c, int k) { bool fu = false; int l = c.length(); if (c[0] == '-') fu = 1; if (c[l - 1] == '.') l--; ll ans = 0; for (int i = fu; i < l; ++i) { ans *= k; ans += mp[c[i]]; } return ans * (fu ? -1 : 1);}int main() { for (int i = 0; i < 10; i++) number[i] = '0' + i; for (int i = 0; i < 6; i++) number[i + 10] = 'A' + i; for (int i = 0; i < 16; i++) mp[number[i]] = i; string s; set
oper; oper.insert('+'), oper.insert('-'), oper.insert('*'), oper.insert('/'); while (cin >> s) { int i = 1; char m = '0'; for (; oper.count(s[i]) == 0; i++) if (mp[s[i]] > mp[m]) m = s[i]; if (mp[s[0]] > mp[m]) m = s[0]; string a = s.substr(0, i); char op = s[i++]; int j = (s[i] != '-' ? i : i + 1); for (; s[j] != '='; j++) if (mp[s[j]] > mp[m]) m = s[j]; string b = s.substr(i, (j++) - i); i = s[j] != '-' ? j : j + 1; for (; i < s.length(); i++) if (mp[s[i]] > mp[m]) m = s[i]; string c = s.substr(j, s.length() - j + 1); bool flag = 0; int ans = -1; for (int k = max(mp[m] + 1, 2); k <= 16; k++) { ll na = to_digit(a, k), nb = to_digit(b, k), nc = to_digit(c, k); switch (op) { case '+': if (na + nb == nc) flag = 1; break; case '-' : if (na - nb == nc) flag = 1; break; case '*': if (na * nb == nc) flag = 1; break; case '/': if (na / nb == nc && na % nb == 0) flag = 1; break; } if (flag) { ans = k; break; } } cout << ans << endl; } return 0;}

转载地址:http://zair.baihongyu.com/

你可能感兴趣的文章
mysql 将null转代为0
查看>>
mysql 常用
查看>>
MySQL 常用列类型
查看>>
mysql 常用命令
查看>>
Mysql 常见ALTER TABLE操作
查看>>
MySQL 常见的 9 种优化方法
查看>>
MySQL 常见的开放性问题
查看>>
Mysql 常见错误
查看>>
mysql 常见问题
查看>>
MYSQL 幻读(Phantom Problem)不可重复读
查看>>
mysql 往字段后面加字符串
查看>>
mysql 快照读 幻读_innodb当前读 与 快照读 and rr级别是否真正避免了幻读
查看>>
MySQL 快速创建千万级测试数据
查看>>
mysql 快速自增假数据, 新增假数据,mysql自增假数据
查看>>
MySql 手动执行主从备份
查看>>
Mysql 批量修改四种方式效率对比(一)
查看>>
Mysql 报错 Field 'id' doesn't have a default value
查看>>
MySQL 报错:Duplicate entry 'xxx' for key 'UNIQ_XXXX'
查看>>
Mysql 拼接多个字段作为查询条件查询方法
查看>>
mysql 排序id_mysql如何按特定id排序
查看>>