HDU 4541 Ten Googol
Ten Googol
Time Limit: 500/200 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)
Total Submission(s): 100 Accepted Submission(s): 48
面试官在房间的白板上写下6个数字:
10,9,60,90,70,66
现在的问题是,接下来该出现什么数字?
想不出来了吧?不要再从数学的角度想了,把这些数字用正常的英文拼写出来:
ten(10)
nine(9)
sixty(60)
ninety(90)
seventy(70)
sixty-six(66)
我们可以惊奇的发现这些数字都是按字母的多少排序的!再仔细一看:ten(10)不是唯一一个可以用3个字母拼出的数字,还有one(1),two(2),six(6);nine(9)也不是唯一一个用4个字母拼出的数字,还有zero(0),four(4)和five(5).而题目中的数字,每一个都是用给定长度的字母拼写出来的数字里最大的一个!
现在我们回到原题:接下去该是哪个数字呢?
我们注意到,66对应的字母长度为8(特别提醒:连接符不算在内),不管之后跟着哪个数,它都应该有9个字母,而且应该是9个字母拼出的数字里最大的。仔细找一下,你可能就会得出ninety-six(96)。不可能是100以上的数字,因为它会以one hundred开头,这已经有10个字母了。
对于Google面试官来说,96只不过是可以接受的答案之一,另一个更好的回答是:
100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
也就是10的101次方,即:ten googol(有关Googol的资料可以在wiki中了解)。据说当年Google这个名字的创建也是由googol演化过来的(江湖传说肖恩拼写时老爱出错,本来想注册googol或者googolplex,结果由于手误就注册了google)。
好了,当你解出了这道难题,面试官的下一道题目接踵而至——给你两个正整数N和M,要求你输出由N个字母组成的第M大数(我们只考虑0~99和googol级别的数字)。
注意:这里所说的“第M大数”是指从小到大的第M大,具体参见Sample
每组数字由两个正整数N和M组成。
[Technical Specification]
1<=T<=100
3<=N<=9
1<=M<=100
#include <stdio.h> #include <algorithm> #include <string.h> #include <iostream> #include <vector> #include <map> #include <set> #include <queue> #include <math.h> using namespace std;int a[]={0,3,3,5,4,4,3,5,5,4,3,6,6, 8,8,7,7,9,8,8,6 };int num[50][200];int main() {for(int i=0;i<20;i++)num[i][0]=0;num[4][++num[4][0]]=0;for(int i=1;i<=20;i++){num[a[i]][++num[a[i]][0]]=i;}for(int i=1;i<=9;i++)num[6+a[i]][++num[6+a[i]][0]]=20+i;num[6][++num[6][0]]=30;for(int i=1;i<=9;i++)num[6+a[i]][++num[6+a[i]][0]]=30+i;num[5][++num[5][0]]=40;for(int i=1;i<=9;i++)num[5+a[i]][++num[5+a[i]][0]]=40+i;num[5][++num[5][0]]=50;for(int i=1;i<=9;i++)num[5+a[i]][++num[5+a[i]][0]]=50+i;num[5][++num[5][0]]=60;for(int i=1;i<=9;i++)num[5+a[i]][++num[5+a[i]][0]]=60+i;num[7][++num[7][0]]=70;for(int i=1;i<=9;i++)num[7+a[i]][++num[7+a[i]][0]]=70+i;num[6][++num[6][0]]=80;for(int i=1;i<=9;i++)num[6+a[i]][++num[6+a[i]][0]]=80+i;num[6][++num[6][0]]=90;for(int i=1;i<=9;i++)num[6+a[i]][++num[6+a[i]][0]]=90+i;//printf("%d\n",num[3][0]);int n,m;int T;int iCase=0;scanf("%d",&T);while(T--){iCase++;printf("Case #%d: ",iCase);scanf("%d%d",&n,&m);if(n==9){if(m>4+num[9][0]){printf("-1\n");continue;}else if(m<=num[9][0])printf("%d\n",num[9][m]);else{printf("%d",num[3][m-num[9][0]]);for(int i=0;i<100;i++)printf("0");printf("\n");}}else{if(m>num[n][0])printf("-1\n");else printf("%d\n",num[n][m]);}}return 0; }
HDU 4541 Ten Googol相关推荐
- hdu 4541 Ten Googol 小水题
Ten Googol Time Limit: 500/200 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Total S ...
- hdu 4541 Ten Googol
尼吗,被这题的googol坑了两个多小时,硬是没明白她那个googol就是10 的100次方 #include <stdio.h> #include <string.h> #i ...
- 【HDOJ】4541 Ten Googol
打表的大水题. 1 /* 4541 */ 2 #include <cstdio> 3 #include <cstdlib> 4 #include <cstring> ...
- Ten Googol
Problem Description Google的面试题向来以古怪闻名,延续自技术公司用逻辑题测试求职者的古老传统.现在我们来看看下面这题: 面试官在房间的白板上写下6个数字: 10,9,60,9 ...
- hdu 4541(麻烦的模拟)
Ten Googol Time Limit: 500/200 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Total S ...
- HDU 4541 模拟
第一开始打印10的100次方的时候弄成了1000个0.....,害得我搞了半天 #include<stdio.h> #include<stdlib.h> #include< ...
- HDU - 2619 Love you Ten thousand years
Love you Ten thousand years------Earth's rotation is a day that is the representative of a day I lov ...
- HDU - 2619 Love you Ten thousand years【原根】
Discription Love you Ten thousand years------Earth's rotation is a day that is the representative of ...
- 【HDU 2619】Love you Ten thousand years
1.题目链接.原根的一个性.当a的阶等于phi(m)的时候,说明a是m的一个原根.首先这里原根的存在性是不用判断的,因为奇素数一定存在原根.当a是原根时,a^0,a^1,a^2....a^(odr(a ...
最新文章
- python基础day4
- 2021-05-25 传递函数阶跃响应指标的matlab计算
- printf, sprintf - 转换成指定格式的输出结果.
- 工作流中切换数据库时---“禁止流转”
- oracle的导出参数statistic,使用expdp导出时评估所需存储容量大小
- 解决ubuntu中vi不能正常使用方向键与退格键的问题 - 部分按键无法正常使用 按键乱码...
- react 生命挂钩_角生命周期挂钩:ngOnChanges,ngOnInit等
- mysql 5.7.6 5.7.19_免编译安装mysql 5.7.19
- python3.8如何安装jieba库_安装jieba、wordcloud等第三方库
- deepsort代码解读
- 使用echarts来显示世界地图和全国地图,并且可以下钻层级
- android horizontalscrollview 动画,Android 用HorizontalScrollView实现滑动标签tabView
- 麒麟V10系统-系统激活点击按钮无响应
- AOSP AOKP CM
- Java中变量与常量
- 自定义封包协议c语言,Socket分包,封包,粘包
- 使用ffmpeg将视频切片并加密
- 给出n个数,找出这n个数的最大,最小,和值
- vite hmr热更新
- python版期货量化交易(AlgoPlus)案例(多进程处理子任务)
热门文章
- 以下不是python内置函数的是_下列那个不是Python的内置功能函数:
- 即构上线“视频面试”,让远程面试不再“远”
- 原生JS实现拖拽进度条、滚动鼠标显示相应的内容
- OpenCV从入门到入坟
- 2021年4月 PDD电商 抖音学习
- 基于PIE-Engine的耕地“非农化”“非粮化”智能监测平台应用
- linux redis哨兵 sh,Linux下redis的持久化、主从同步与哨兵详解
- WiFi也能检测人体3D动作?误差低至2.4厘米
- Android模拟机出现Installation failed due to invalid APK file错误
- linux系统学习笔记8——LiuxCNC镜像系统安装步骤