复试C语言常考趣味程序设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
狼追兔子 1
巧夺偶数 2
五猴分桃 3
高次方数 4
借书方案 5
过桥问题 6
数制转换7
打渔晒网8
喝酒问题9 哥德巴赫猜想10 打印日历11 抓交通肇事逃逸犯12 反序数13
新郎新娘14
称重砝码15
求车速16
谁是窃贼17
出售金鱼18
百钱百鸡19
谜语博士20 猜牌术(-)21 舍罕王的失算22 怎样存钱利最大23 猜牌术(二)24 爱因斯坦的数学题25 取火柴游戏26
平分鱼和筐27
可逆素数28
三色球问题29
抢n游戏30
问题A: 趣味程序设计_狼追兔子
时间限制: 1 Sec 内存限制: 128 MB
提交: 341 解决: 63
[提交][状态][讨论版]
题目描述
一只兔子躲进了n个环形分布的洞的某一个中。狼在第一个洞没有找到兔子,就隔一个洞,到第三个洞去找;也没有找到,就隔两个洞,到第六个洞去找。以后每次多一个洞去找兔子……这样下去,如果一直找不到兔子,请问兔子可能在哪个洞中?
输入
有多组测试数据,读取到文件结尾符为止。每组测试数据输入n(2≤n≤100),即洞穴个数。输入到文件结尾符为止。
输出
兔子可能藏匿的洞。如果不止一个,按从小到大的顺序输出。如果不存在,输出空行。
样例输入
10
8
15
样例输出
2 4 7 9
2 4 5 7 8 9 11 12 14
提示
用一个数组a[10],对应的元素a[0],a[1],a[2]……a[9]对应表示10个洞,初值均置1。通过一个循环用“穷举法”找兔子,第n次查找对应第(n-1)%10个洞,如果在第(n-1)%10个洞中没有找到兔子,因此将数组元素a[(n-1)%10]置0值。循环完成后,检查a数组各元素(各个洞)的值,若其值仍为1,则兔子可能藏身该洞中。
#include
#include
int ok[110];
int main()
{
int n,s,i,find;
while(scanf("%d",&n)!=EOF)
{
memset(ok,0,sizeof(ok));
for(i=1;i<=200;i++)
if(!ok[find=(i*(i+1)/2)%n])
if(find==0)
ok[n]=1;
else
ok[find]=1;
for(s=0,i=1;i<=n;i++)
s+=ok[i];
for(i=1,find=0;i<=n;i++)
if(!ok[i])
{
if(find!=(n-s-1))
{
printf("%d ",i);find++;
}
else
printf("%d",i);
}
printf("\n");
}
return 0;
}
问题B: 趣味程序设计_巧夺偶数
时间限制: 1 Sec 内存限制: 128 MB
提交: 174 解决: 73
[提交][状态][讨论版]
题目描述
桌子上有25颗棋子。游戏双方轮流取子,每人每次最少取走一颗棋子,最多可取走3颗棋子。双方照这样取下去,直到取光所有的棋子。于是双方手中必然一方为偶数,一方为奇数,偶数方为胜者。请编程实现人机游戏。人先走,计算机后走。若游戏结束,则输出“Game over!”。
输入
输入人取走棋子的个数。输入一次,按一次回车。游戏不止一轮。按下文件结尾符,退出游戏。必须在完成一轮后退出游戏。不得中途退出游戏。
输出
输出计算机取走的个数,每次输出最优解。
样例输入
1
1
1
1
1
1
1
2
1
3
2
1
3
1
样例输出
3
3
3
3
3
3
Game over!
2
3
1
2
3
1
Game over!
#include
int main()
{
int n,sum=25;
loop:
while(scanf("%d",&n)!=EOF)
{
sum-=n;
if(sum==1)
{
printf("1\nGame over!\n");
sum=25;
goto loop;
if(sum==3||sum==2)
{
printf("1\n");
sum--;
}
}
else
{
if(sum<=0)
{
printf("Game over!\n");
sum=25;
goto loop;
}
else
{
printf("%d\n",4-n); if(n==1)
sum-=3;
if(n==2)
sum-=2;
if(n==3)
sum-=1;
}
}
}
return 0;
}