Ten Googol

Time Limit: 500/200 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)
Total Submission(s): 545    Accepted Submission(s): 267

Problem Description
Google的面试题向来以古怪闻名,延续自技术公司用逻辑题测试求职者的古老传统.现在我们来看看下面这题:

  面试官在房间的白板上写下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

Input
输入数据第一行有一个数字T,代表有T组数据。
每组数字由两个正整数N和M组成。

[Technical Specification]
1<=T<=100
3<=N<=9
1<=M<=100

Output
首先输出case数(见sample),接着输出由N个字母组成的第M大数,如果没有,则输出-1。
Sample Input
6 3 1 3 2 4 1 4 2 5 1 9 100
Sample Output
Case #1: 1 Case #2: 2 Case #3: 0 Case #4: 4 Case #5: 3 Case #6: -1
Source
2013腾讯编程马拉松复赛第三场(3月31日)
开始领会错题意了。。以为two googol 是 2^101 ..结果后面发现是 2*10^101.
#include<stdio.h>
#include<string.h>
#include <iostream>
#include <algorithm>
#include <stdlib.h>
using namespace std;
int a[10][30]={
{-1},
{-1},
{-1},
{-1,1,2,6,10},
{-1,0,4,5,9},
{-1,3,7,8,40,50,60},
{-1,11,12,20,30,80,90},
{-1,15,16,70},
{-1,13,14,18,19,41,42,46,51,52,56,61,62,66},
{-1,17,21,22,26,31,32,36,44,45,49,54,55,59,64,65,69,81,82,86,91,92,96}
};
char str[5][200] ={"0","10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
};
int main()
{int tcase;scanf("%d",&tcase);int t = 1;while(tcase--){int k,b;scanf("%d%d",&k,&b);printf("Case #%d: ",t++);if(k==3){if(b>4) printf("-1\n");else printf("%d\n",a[k][b]);}if(k==4){if(b>4) printf("-1\n");else printf("%d\n",a[k][b]);}if(k==5){if(b>6) printf("-1\n");else printf("%d\n",a[k][b]);}if(k==6){if(b>6) printf("-1\n");else printf("%d\n",a[k][b]);}if(k==7){if(b>3) printf("-1\n");else printf("%d\n",a[k][b]);}if(k==8){if(b>13) printf("-1\n");else printf("%d\n",a[k][b]);}if(k==9){if(b>26) printf("-1\n");else if(b>22) printf("%s\n",str[b-22]);else printf("%d\n",a[k][b]);}}return 0;
}

转载于:https://www.cnblogs.com/liyinggang/p/5626127.html

hdu 4541(麻烦的模拟)相关推荐

  1. HDU 3328 Flipper 栈 模拟

    HDU 3328 Flipper 栈 模拟 首先想说,英语太烂这题读了很长时间才读懂......题意是说输入有几张牌,然后输入这些牌的初始状态(是面朝上还是面朝下),然后输入操作方式,R表示翻一下右边 ...

  2. HDU 4541 模拟

    第一开始打印10的100次方的时候弄成了1000个0.....,害得我搞了半天 #include<stdio.h> #include<stdlib.h> #include< ...

  3. 圆桌会议 HDU - 1214(规律+模拟队列)

    Time limit     1000 ms Memory limit     32768 kB OS    Windows Source     杭电ACM省赛集训队选拔赛之热身赛 HDU ACM集 ...

  4. hdu 5374 Tetris(模拟)

    题目链接:hdu 5374 Tetris 模拟.每次进行操作时推断操作是否合法,合法才运行,否则跳过.每次一个token落地,推断一下是否有消除整行. #include <cstdio> ...

  5. HDU —— 2996 Pagination (模拟)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2996 题目: Pagination Time Limit: 2000/1000 MS (Java/Ot ...

  6. HDU - 6746 Civilization(贪心+模拟)

    题目链接:点击查看 题目大意:中文题面 题目分析:一道比赛时写崩了的模拟,赛后参考别人的代码,发现原来这个题目可以写的如此简单 说会题目,n 只有 500 ,可以 n * n 枚举每个位置作为起点,对 ...

  7. HDU 1727 Hastiness(模拟)

    Hastiness Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  8. HDU 1262 寻找素数对 模拟题

    题目描述:输入一个偶数,判断这个偶数可以由哪两个差值最小的素数相加,输出这两个素数. 题目分析:模拟题,注意的是为了提高效率,在逐个进行判断时,只要从2判断到n/2就可以了,并且最好用打表法判断素数. ...

  9. HDU 1107 武林 大模拟

    题目:https://cn.vjudge.net/problem/HDU-1107 题意:中文题干不再赘述,仅强调两处细节 (1)仅当一个格子里有两名弟子,且二者分属不同门派时才会发生战斗. (2)每 ...

最新文章

  1. SQL查询一个表中另外一个表不存在的数据
  2. Java的知识点31——线程同步
  3. 【Tomcat】Tomcat 系统架构与设计模式,第 1 部分: 工作原理
  4. abstract类中不可以有private的成员_C++类成员的三种访问权限:public/protected/private...
  5. UnicodeDecodeError: 'ascii' codec can't decode byte 0xe6 in position 46: ordinal
  6. showmodaldialog 为什么不能复制_防复制的门禁读头可以防止UID和FUID读卡器
  7. html中怎么显示错误信息,在html中显示为内嵌错误的文本
  8. 破除“论文至上”!两部委发文规范SCI指标使用
  9. 【数据库系统】编程语言类型说明系统和DDL的区别
  10. 【报告分享】B2B内容营销指南—制定有效内容策略-领英.pdf(附下载链接)
  11. Flash 平台音视频直播的实现
  12. 冲刺第一天 11.23 FRI
  13. 旷视6号员工范浩强:高二开始实习,“兼职”读姚班,25岁在CVPR斩获第四个世界第一...
  14. HTML学生个人网站作业设计——HTML+CSS+JavaScript优分期大学生分期购物商城(7页)
  15. 浙江电信网速测试皮肤软件,浙江电信网速测试(进入中国电信官方测速网站)
  16. 谈谈promise,谈谈微任务
  17. Vue3使用路由及配置vite.alias简化导入写法
  18. 天大青医堂第十期报告会之一
  19. redis使用c++ API 的hiredis连接详解
  20. Win10安装VBox

热门文章

  1. 华为鸿蒙和苹果ios哪个好,鸿蒙OS对比iOS,华为再次“超越”,流畅度大幅领先苹果!...
  2. 检测之VOC转COCO
  3. 你的电脑是用来玩游戏还是办公生活?
  4. 拉普拉斯------拉普拉斯算子
  5. C++如何快速更改纯色背景
  6. 小熊猫C++中配置OpenCV
  7. 计算机专业毕业论文大纲,计算机科学与技术专业《毕业设计》教学大纲.doc
  8. android 打开各种文件的方式
  9. 一个技校生的IT生涯 --- 我和软件的姻缘【0】
  10. SEO外链发布操作规范