PAT (Advanced Level) 1010 Radix (25 分)
发布日期:2021-06-29 12:22:25
浏览次数:3
分类:技术文章
本文共 1980 字,大约阅读时间需要 6 分钟。
序:
不完美才是人生,这道题自己写的永远是24分。题目概述:
给出两个数a和b,以及进制radix。假设a在radix进制下,问是否存在进制radix1使得b在radix1下与a在radix下的值相等。分析:
1.全部转成十进制比较,十进制的值用unsigned longlong存,这样最大 2.从2开始尝试radix1,直到100(再多也是差一个测试点),如果值比原十进制数小则continue;相等则输出进制;若大了,则impossible。这里随着进制的增加,一个既定的数的十进制值也会增加。 3.数的每位都必须小于进制数,否则continue。//尝试到100进制//随着进制的变大,其值会逐渐变大#includeusing namespace std;int main(){ string str1, str2, rest; int tag, radix; cin >> str1 >> str2 >> tag >> radix; long long int valin10 = 0; string str; if(tag == 1) { str = str1; rest = str2;} else if(tag == 2) { str = str2; rest = str1;} int len = str.size(); int temp; for(int i = 0; i < len; i++) { if(isdigit(str[len-1-i])) { temp = str[len-1-i] - '0'; valin10 += temp * pow(radix, i); } else { temp = str[len-1-i] - 'a' + 10; valin10 += temp * pow(radix, i); } } for(int index = 2; index <= 100; index++) { unsigned long long tryvalin10 = 0; len = rest.size(); bool flag = true; for(int i = 0; i < len; i++) { if(isdigit(rest[len-1-i])) { temp = rest[len-1-i] - '0'; if(temp >= index) flag = false; tryvalin10 += temp * pow(index, i); } else { temp = rest[len-1-i] - 'a' + 10; if(temp >= index) flag = false; tryvalin10 += temp * pow(index, i); } } if(flag == false) continue; if(tryvalin10 < valin10) continue; else if(tryvalin10 == valin10) { cout << index << endl; return 0; } else { cout << "Impossible" << endl; return 0; } } }
总结:
看了柳神的做法,二分可以更快。且她的遍历范围不止100,而是整个可能的进制,但是写法比较晦涩难懂。我在第七个测试点过不了,唯一可能的解释就是这个进制过大了,我没有遍历到。 请诸位多多指教!转载地址:https://bridge-killer.blog.csdn.net/article/details/115431888 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
很好
[***.229.124.182]2024年04月11日 06时00分00秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
awk 的内置变量 NF、NR、FNR、FS、OFS、RS、ORS
2019-04-29
CentOS系统内核升级攻略
2019-04-29
linux系统时区修改(Debian的主机和docker)
2019-04-29
docker-compose 安装
2019-04-29
crontab 定时任务
2019-04-29
查看docker veth pair与宿主机上网卡的对应关系
2019-04-29
使用 GitLab CI 进行持续集成的一些踩坑
2019-04-29
企业云盘给贸易业带来新的效益
2019-04-29
Linux入门常用命令
2019-04-29
Spring整理
2019-04-29
SpringMvc加强
2019-04-29
初识Vue全家桶 Nuxt.js(一)
2019-04-29
基本路由及动态路由(二)
2019-04-29
视图:默认模板+默认布局(自定义布局)+nuxt.js页面(三)
2019-04-29
基于nuxt下asyncData,fetch发送axios请求(四)
2019-04-29
插件机制+自定义axios(五)
2019-04-29
Redis的学习之路
2019-04-29
Windows下Redies+GUI安装,使用Jedis与spring boot 整合
2019-04-29
Windows创建本地版本库(1)
2019-04-29