Astar2007初赛第一场的题目2
今天查到了Astar2007的初赛题目,很感兴趣,便拿来做了一下,这是第二题。
2.大话西游与数字游戏
“叉烧鸡翅膀,我呀最爱吃!……”,百度spider组的“黑龙潭之行”在烤着鸡翅,唱着星爷的经典时达到高潮。大家在篝火旁围成一圈,开始玩“数7”加强版游戏,规则如下:
规则1:遇7的倍数或含7的数时pass。
规则2:遇有包含相同数字的数时pass。注意相同数字不必相邻。例如121。
数错的惩罚很残酷——吞食烤全羊。为避免惩罚,百度工程师们需要你——史上最强程序员的帮助。百度工程师想知道:
req1 x:符合规则1的第x个数是什么?
req2 y:符合规则2的第y个数是什么?
req12 z:同时符合规则1、2的第z个数是什么?
query n:数n是规则1中的第几个数,是规则2中的第几个数?
输入格式
输入的每一行为一个查询,由一个查询词和一个无符号整型数组成。共有四种查询,查询词分别为req1、req2、req12、query(区分大小写)。
输出格式
前三种查询输出一个无符号整型的解。对于“query n”的查询,若n是规则中的数则输出相应的解,否则输出-1。
输入样例 例
req1 10
req2 10
req12 10
query 14
输出样例 例
11
10
12
-1 13
评分规则
程序将运行在一台Linux机器上(内存使用不作严格限制),在每一测试用例上运行不能超过1秒,否则该用例不得分;
要求程序能按照输入样例的格式读取标准输入数据,按照输出样例的格式将运行结果输出到标准输出上。如果不能正确读入数据和输出数据,该题将不得分;
该题目共有10个测试数据集,其中数据1~5主要考查正确性,满足x,y,z,n
该题目20分。
1/**//*包含头文件*/
2#include <stdio.h>
3#include <string.h>
4
5/**//*函数原型*/
6int getRule(int n);
7void getArray(int* num,int length,int rule);
8void req1(int n);
9void req2(int n);
10void req12(int n);
11int getIndex(int n,int rule);
12void query(int n);
13void doit(char* s,int num);
14void disp(int rule);
15
16/**//*
17函数原型:void main()
18功能:主函数
19参数:无
20返回值:无
21*/
22void main(){
23 /**//*clrscr();*/
24 int num;
25 char space[20],*s=space;
26 fflush(stdin);
27 scanf("%s %d",s,&num);
28 doit(s,num);
29}
30
31/**//*
32函数原型:int getRule(int n)
33功能:取得某数字符合的规则。
34参数:要判断的数字n
35返回值:整型变量,取值范围为2bit,高位为规则1,低位为规则2。
36*/
37
38int getRule(int n){
39 int r1=0,r2=0,q=0,test[10]={0,0,0,0,0,0,0,0,0,0};
40 if(n%7==0){
41 r1=1;
42 }
43 do{
44 q=n%10;
45 n=n/10;
46 if(q==7)r1=1;
47 /**//*printf("\tq=%d,test[q]=%d\n",q,test[q]);*/
48 if(test[q]==1)r2=1;
49 test[q]=1;
50 }while(n>0);
51 return ((r1<<1)+r2);
52}
53
54/**//*
55函数原型:void req1(int n)
56功能:执行req1命令
57参数:要判断的数n
58返回值:无
59*/
60
61void req1(int n){
62 int i,count=0;
63 for(i=1;count<n;i++){
64 if(getRule(i)!=2)count++;
65 }
66 printf("%d\n",--i);
67}
68/**//*
69函数原型:void req2(int n)
70功能:执行req2命令
71参数:要判断的数n
72返回值:无
73*/
74
75
76void req2(int n){
77 int i,count=0;
78 for(i=1;count<n;i++){
79 if(getRule(i)!=1)count++;
80 }
81 printf("%d\n",--i);
82}
83/**//*
84函数原型:void req12(int n)
85功能:执行req12命令
86参数:要判断的数n
87返回值:无
88*/
89
90
91void req12(int n){
92 int i,retrule,count=0;
93 for(i=1;count<n;i++){
94 retrule=getRule(i);
95 if(retrule!=2&&retrule!=1)count++;
96 }
97 printf("%d\n",--i);
98}
99/**//*
100函数原型:int getIndex(int n,int rule)
101功能:取得数字n是符合规则rule的第几个元素,如不在数列中返回-1
102参数:要计算的数字n,规则rule
103返回值:元素索引,或-1
104*/
105
106int getIndex(int n,int rule){
107 int i,count=0;
108 if(getRule(n)==rule)
109 {
110 count=-1;
111 }
112 else{
113 for(i=1;i<=n;i++){
114 if(getRule(i)!=rule)count++;
115 }
116 }
117 return count;
118
119}
120/**//*
121函数原型:void query(int n)
122功能:执行query语句
123参数:要查找的数n
124返回值:无
125*/
126
127void query(int n){
128 printf("%d %d\n",getIndex(n,2),getIndex(n,1));
129}
130/**//*
131函数原型:void doit(char* s,int num)
132功能:执行各种命令
133参数:命令s与参数num
134返回值:无
135*/
136
137void doit(char* s,int num){
138 if(strcmp(s,"req1")==0){
139 req1(num);
140 return;
141 }
142 if(strcmp(s,"req2")==0){
143 req2(num);
144 return;
145 }
146 if(strcmp(s,"req12")==0){
147 req12(num);
148 return;
149 }
150 if(strcmp(s,"query")==0){
151 query(num);
152 return;
153 }
154}
155
转载于:https://www.cnblogs.com/zxsoft/archive/2007/07/19/823272.html
Astar2007初赛第一场的题目2相关推荐
- 百度之星2009程序设计大赛 初赛第一场试题
百度之星2009程序设计大赛 初赛第一场试题 2009年5月30日19:00-22:30(由于第二题出错,比赛时间延长半小时),2008百度之星大赛在线资格赛(初赛)展开.百度爱好者(Baiduer. ...
- 2021百度之星初赛第一场部分题解
写在前面 几个家长要求我写一些2021百度之星初赛第一场的题解. 1003 鸽子 原题链接 https://acm.hdu.edu.cn/showproblem.php?pid=6998 http:/ ...
- 2017 计蒜之道 初赛 第一场 A题B题
阿里九游开放平台近日上架了一款新的益智类游戏--成三棋.成三棋是我国非常古老的一个双人棋类游戏,其棋盘如下图所示: 成三棋的棋盘上有很多条线段,只能在线段交叉点上放入棋子.我们可以用坐标系来描述棋盘: ...
- 银联高校极客挑战赛 初赛 第一场、第二场合集(3+3题)
第一场 A. 码队女朋友的王者之路 测试用例 测试1 4 5 2 2 00101 5 1 2 11110 6 2 3 000000 7 6 6 0000001 测试2 1 1 1 1 0 测试3 1 ...
- 微软2014编程之美初赛第一场——题目3 : 活动中心
[来源] 题目3 : 活动中心 [分析] 本题採用的是三分法. 输入的一组点中找出左右边界.作为起始边界. while(右边界-左边界<精度){将左右边界构成的线段均匀分成3段,推断切割点的距离 ...
- 2017百度之星初赛第一场题解
前言 这场比赛我卡在线上了,没有进TAT 我只做了三道水题.. 首先是在比赛开始的时候我还在睡觉,我以为是2:30开始.. 然后,由于这个垃圾评测,卡死人了.. 于是我刷新一下,就算了我交了两次,于是 ...
- 编程之美初赛第一场--焦距
题目1 : 焦距 时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描写叙述 一般来说.我们採用针孔相机模型,也就是觉得它用到的是小孔成像原理. 在相机坐标系下,一般来说,我们用到 ...
- 2014编程之美初赛第一场
题目1 : 焦距 时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 一般来说,我们采用针孔相机模型,也就是认为它用到的是小孔成像原理. 在相机坐标系下,一般来说,我们用到的单 ...
- 百度之星 2017初赛第一场 1005 今夕何夕
今夕何夕 Accepts: 1345 Submissions: 5533 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32 ...
最新文章
- nginx的读写分离
- 如何使用Microsoft技术栈
- 801. 二进制中1的个数 【二进制的基本模板】
- SpringBoot实现Redis分布式锁
- 数据格式之战:JSON vs XML
- 自定义Xcode代码模板:Code Snippet
- #celery#周期性任务
- html 直线变曲线,CSS3怎么画曲线?
- 把女友升级为老婆的时候发生的BUG(二)
- 卡尔曼滤波(kalman filter)
- python核心编程豆瓣_python核心编程一书笔记之第一篇
- C#网络编程示例(note)
- 使用pm2后台运行nodejs程序
- webservices系列(三)——调用线上webservice(天气预报和号码查询)
- Windows 10, version 22H2 (released Oct 2022) 简体中文版、英文版下载
- 阿里云赵明山:详解灵活可插拔的渐进式发布框架OpenKruise Rollout
- 工控攻击,黑客组织GhostSec 称入侵以色列55 家Berghof PLC
- 常见HTTP错误码定义
- fix协议的服务器,FIX 协议开发(3):QuickFIX/J 实战经验小结
- DIY一个按键精灵,用python控制mac的鼠标与键盘
热门文章
- Linux中如何使用帮助
- Apache james 2.3.2.1启动失败换成2.3.2版本就好
- 第二阶段团队进展报告(3)
- 程序员的黑科技_用代码回复博客
- .NET中统一的存储过程调用方法(收藏)
- Python中列表实现:输入年月日,输出本年的第?天
- 1-判断数字所在区间
- Ubuntu Linux服务器配置SSH无密码登陆
- svn服务器会用到哪些端口_“模切压痕”会用到哪些材料?
- 合作开发过程产生的专利_合作开发合同(二)