计算机C语言趣味的程序设计题目百例 .pdf
Contest-2011级 C语言课程大作业Start Time:2012-02-19 16:25:00 End Time:2012-03-01 22:00:00Current Time:2012-2-23 15:51:18 Status:RunningPublicProblem ID Title Y1211 Problem A 趣味程序设计狼追兔子Y1212 Problem B 趣味程序设计巧夺偶数Y1213 Problem C 趣味程序设计五猴分桃Y1214 Problem D 趣味程序设计高次方数Y1215 Problem E 趣味程序设计借书方案Y1216 Problem F 趣味程序设计过桥问题Y1217 Problem G 趣味程序设计数制转换1218 Problem H 趣味程序设计打渔晒网N1219 Problem I 趣味程序设计喝酒问题Y1220 Problem J 趣味程序设计哥德巴赫猜想1221 Problem K 趣味程序设计打印日历Y1222 Problem L 趣味程序设计抓交通肇事逃逸犯Y1223 Problem M 趣味程序设计反序数Y1224 Problem N 趣味程序设计新郎新娘1225 Problem O 趣味程序设计称重砝码1226 Problem P 趣味程序设计求车速Y1227 Problem Q 趣味程序设计谁是窃贼Y1228 Problem R 趣味程序设计出售金鱼Y1229 Problem S 趣味程序设计百钱百鸡Y1230 Problem T 趣味程序设计谜语博士1231 Problem U 趣味程序设计猜牌术()Y1232 Problem V 趣味程序设计舍罕王的失算1233 Problem W 趣味程序设计怎样存钱利最大1234 Problem X 趣味程序设计猜牌术(二)Y1235 Problem Y 趣味程序设计爱因斯坦的数学题Y1236 Problem Z 趣味程序设计取火柴游戏1237 Problem a 趣味程序设计平分鱼和筐Y1238 Problem b 趣味程序设计可逆素数名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 42 页 -Y1239 Problem c 趣味程序设计三色球问题Y1240 Problem d 趣味程序设计抢n 游戏写在最前:本文档中的题目;在不不同的编译器中可能会有提示错误,呵呵,小小的动动手改下变量的定义就可以运行了.由于能力不足.有题目未解决的或者有错误的我会认真听取大家的.意见的.呵呵 .有一两个.偷了下懒哦 提供原题目还有本人自己的解答的源代码。感谢大家的。建议 .问题 A:趣味程序设计狼追兔子时间限制:1 Sec 内存限制:128 MB 提交:341 解决:63 提交 状态 讨论版 题目描述一只兔子躲进了n 个环形分布的洞的某一个中。狼在第一个洞没有找到兔子,就隔一个洞,到第三个洞去找;也没有找到,就隔两个洞,到第六个洞去找。以后每次多一个洞去找兔子 这样下去,如果一直找不到兔子,请问兔子可能在哪个洞中?输入有多组测试数据,读取到文件结尾符为止。每组测试数据输入n(2n100),即洞穴个数。输入到文件结尾符为止。输出兔子可能藏匿的洞。如果不止一个,按从小到大的顺序输出。如果不存在,输出空行。名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 42 页 -样例输入10 8 15 样例输出2 4 7 9 2 4 5 7 8 9 11 12 14 提示用一个数组a10,对应的元素a0,a1,a2 a9对应表示10 个洞,初值均置1。通过一个循环用“穷举法”找兔子,第n 次查找对应第(n1)%10 个洞,如果在第(n1)%10 个洞中没有找到兔子,因此将数组元素a(n1)%10 置 0 值。循环完成后,检查a 数组各元素(各个洞)的值,若其值仍为1,则兔子可能藏身该洞中。#include#include int ok110;int main()int n,s,i,find;while(scanf(%d,&n)!=EOF)memset(ok,0,sizeof(ok);for(i=1;i=200;i+)if(!okfind=(i*(i+1)/2)%n)if(find=0)okn=1;else okfind=1;for(s=0,i=1;i=n;i+)s+=oki;for(i=1,find=0;i=n;i+)if(!oki)if(find!=(n-s-1)printf(%d,i);find+;名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 42 页 -else printf(%d,i);printf(n);return 0;问题 B:趣味程序设计巧夺偶数时间限制:1 Sec 内存限制:128 MB 提交:174 解决:73 提交 状态 讨论版 题目描述桌子上有25 颗棋子。游戏双方轮流取子,每人每次最少取走一颗棋子,最多可取走3 颗棋子。双方照这样取下去,直到取光所有的棋子。于是双方手中必然一方为偶数,一方为奇数,偶数方为胜者。请编程实现人机游戏。人先走,计算机后走。若游戏结束,则输出“Game over!”。输入输入人取走棋子的个数。输入一次,按一次回车。游戏不止一轮。按下文件结尾符,退出游戏。必须在完成一轮后退出游戏。不得中途退出游戏。输出输出计算机取走的个数,每次输出最优解。样例输入1 1 1 1 1 名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 42 页 -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(1nGame over!n);sum=25;goto loop;if(sum=3|sum=2)printf(1n);名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 42 页 -sum-;else if(sum=0)printf(Game over!n);sum=25;goto loop;else printf(%dn,4-n);if(n=1)sum-=3;if(n=2)sum-=2;if(n=3)sum-=1;return 0;问题 C:趣味程序设计五猴分桃时间限制:1 Sec 内存限制:128 MB 提交:186 解决:102 提交 状态 讨论版 题目描述5 只猴子一起摘了1堆桃子。因为太累了,它们商量决定,先睡一觉再分。过了不知多久,1 只猴子来了。它见别的猴子没来,便将这1 堆桃子平均分成5 份,结果多了1 个,就将多的这个吃了,拿走其中的1 堆。又过了不知多久,第 2 只猴子来了。它不知道有1 个同伴已经来过,还以为自己是第1 个到的呢。于是将地上的桃子堆起来,平均分成5 份,发现也多了 1 个,同样吃了这1 个,拿走其中的1 堆。第 3 只、第 4 只、第 5 只猴子都是这样 问这 5 只猴子至少摘了多少个桃子?第5 个猴子走后还剩下多少个桃子?名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 42 页 -输入无输出输出 5 只猴子至少摘了多少个桃子,第5 个猴子走后还剩下多少个桃子。中间用空格隔开。样例输入样例输出3121 1020 提示思路一:“分”假设至少摘了first_num 个桃子,则令first_num 6,7,8,9,10,这样不断的试,如果那个数能按规则(first_num=(first_num-1)/5*4)被 5 只猴子顺利的吃1 个并分 5组,则为所求。思路二:“凑”假设最后剩下last_num 个桃子,则令last_num4,5,6,7,8,9,10,这样不断的试,如果那个数能按规则(last_num%4=0 则 last_num=last_num/4*5+1)凑 5 次,则为所求。#include#include int main()int first,i,t;for(i=1;i5000;i+=5)first=i;for(t=1;t=5;t+)if(first%5=1)first=(first-1)/5*4;if(t=5)printf(%d%dn,i,first);名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 42 页 -else break;/printf(time:%.2lfn,(double)clock()/CLOCKS_PER_SEC);return 0;问题 D:趣味程序设计高次方数时间限制:1 Sec 内存限制:128 MB 提交:559 解决:80 提交 状态 讨论版 题目描述求 13 的 n 次方(12n130000000000)的最后三位数。例如:13 的 13 次方的最后三位数是 253,13 的 20 次方的最后三位数是801。输入有多组测试数据,每组测试数据一行,即整数n。以文件结尾符结束。输出输出 13 的 n 次方的最后三位数样例输入13 20 样例输出253 801 名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 42 页 -提示64 位整型用 long long 表示,格式串为%lld#include int fun(long long n)int k=13,t=1;while(n0)if(n%2=1)t=t*k%1000;k=k*k%1000;n=1;return t;int main()long long n;while(scanf(%lld,&n)!=EOF)printf(%03dn,fun(n);return 0;问题E:趣味程序设计借书方案时间限制:1 Sec 内存限制:128 MB 提交:429 解决:154 提交 状态 讨论版 题目描述小明有 n 本新书,要借给A、B、C 三位小朋友。只借一次。若每人每次只能借一本,则可以有多少种不同的借法?输入有多组测试数据,输入整数n(5 n1000),输入到文件结尾符为止。名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 42 页 -输出借法总数。样例输入5 6 7 8 样例输出60 120 210 336#include int main()long long n;while(scanf(%lld,&n)!=EOF)printf(%lldn,n*(n-1)*(n-2);return 0;问题 F:趣味程序设计过桥问题时间限制:1 Sec 内存限制:128 MB 提交:102 解决:19 提交 状态 讨论版 题目描述过桥问题。有 N(N2)个人在晚上需要从X 地到达 Y 地,中间要过一座桥,过桥需要手电筒(而他们只有1 个手电筒),每次最多两个人一起过桥(否则桥会垮)。N个人的过桥时间依次存入数名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 42 页 -组 tN 中,分别为:t0,t1,tN-1。过桥的速度以慢的人为准!注意:手电筒不能丢过桥!问题是:编程求这N 个人过桥所花的最短时间。输入有多组测试数据,每组数据先输入一个人数N,然后输入这N 个人过桥所花的时间。输出输出对应的最短时间。样例输入4 1 2 5 10 4 5 2 10 1 样例输出17 17#include void fun(int*a,int n)int i,j,t,k;for(i=0;in-1;i+)k=i;for(j=i+1;jn;j+)if(ajak)k=j;if(i!=k)t=ai;ai=ak;ak=t;名师资料总结-精品资料欢迎下载-名师精心整理-第 11 页,共 42 页 -int main()int a100,i,n,time,k;while(scanf(%d,&n)!=EOF)time=0;for(i=0;in;i+)scanf(%d,&ai);fun(a,n);k=n-1;while(1)if(k=a0+ak)time+=(2*a0+ak-1+ak);if(2*a1a0+ak)time+=(a0+2*a1+ak);k-=2;return 0;问题 G:趣味程序设计数制转换时间限制:1 Sec 内存限制:128 MB 提交:265 解决:110 名师资料总结-精品资料欢迎下载-名师精心整理-第 12 页,共 42 页 -提交 状态 讨论版 题目描述将任一整数转换为二进制数形式并输出。输入有多行数据,每行输入一十进制数字n(1n2147483647)。输入到文件结尾符为止。输出输出 n 的二进制表示样例输入1 2 3 4 5 6 7 样例输出1 10 11 100 101 110 111#include#include void f(long long num)if(num)名师资料总结-精品资料欢迎下载-名师精心整理-第 13 页,共 42 页 -f(num/2);printf(%lld,num%2);int main(void)long long num;while(scanf(%lld,&num)!=EOF)f(num);putchar(n);return 0;问题 H:趣味程序设计打渔晒网时间限制:1 Sec 内存限制:128 MB 提交:205 解决:28 提交 状态 讨论版 题目描述中国有名俗语叫“三天打鱼两天晒网”。小强从 2000 年 1 月 1 日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是在“打鱼”,还是在“晒网”?输入输入日期,格式是yyyy-mm-dd,例如 2012-01-23。输入到文件结尾符为止。输出如果小强在打鱼,那么输出“He is fishing.”。如果小强子在晒网,那么输出“He is drying nets.”样例输入2000-01-01 2000-01-05 名师资料总结-精品资料欢迎下载-名师精心整理-第 14 页,共 42 页 -样例输出He is fishing.He is drying nets.问题I:趣味程序设计喝酒问题时间限制:1 Sec 内存限制:128 MB 提交:97 解决:30 提交 状态 讨论版 题目描述n 个人同桌吃饭,其中一个是数学家,他出了一道难题:假定桌子上有3 瓶啤酒,将每瓶中的酒平分给几个人喝,但喝各瓶酒的人数是不一样的,不过其中有且只有一个人喝了每一瓶中的酒,且加起来刚好是一瓶,请问喝这3 瓶酒的各有多少人?输入有多组测试数据,每行输入总人数n。输入到文件结尾符为止。输出输出这三杯酒分别被几个人喝,三个数字从小到大排列。如果无解,输出“No solution”。样例输入3 4 10 样例输出No solution No solution 2 3 6 名师资料总结-精品资料欢迎下载-名师精心整理-第 15 页,共 42 页 -问题J:趣味程序设计哥德巴赫猜想时间限制:1 Sec 内存限制:128 MB 提交:216 解决:98 提交 状态 讨论版 题目描述2000 以内的不小于4 的正偶数都能够分解为两个素数之和(即验证歌德巴赫猜想对2000 以内的正偶数成立)。输入每行输入一组数据,即2000 以内的正偶数n。输入到文件结尾符为止。输出输出 n 能被分解成的素数,a 和 b。如果不知一组解,输出a 最小的那组解。样例输入4 6 8 10 12 样例输出2 2 3 3 3 5 3 7 5 7#include#include int fun(int n)名师资料总结-精品资料欢迎下载-名师精心整理-第 16 页,共 42 页 -int i;if(n=2)return 1;if(n%2=0)return 0;for(i=3;i=sqrt(n);i+=2)if(n%i=0)return 0;return 1;int main()int n,i,ok;while(scanf(%d,&n)!=EOF)ok=0;for(i=2;i=n/2;i+)if(fun(i)if(fun(n-i)printf(%d%dn,i,n-i);ok=1;if(i!=2)i+;if(ok)break;return 0;问题 K:趣味程序设计打印日历时间限制:1 Sec 内存限制:128 MB 提交:89 解决:8 提交 状态 讨论版 题目描述打印出任意年份的日历。提示:要判断该年份是否是闰年,若是闰年,二月为29 天,名师资料总结-精品资料欢迎下载-名师精心整理-第 17 页,共 42 页 -平年为 28 天。而判断闰年的规则是:如果(该年能被4 除尽且不能被100 除尽)或能被 400 除尽),则该年是闰年。输入年份输出该年 12 个月的日历样例输入2012 样例输出*Mon Tue Wed Thu Fri Sat Sun 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 30 31*Mon Tue Wed Thu Fri Sat Sun 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*Mon Tue Wed Thu Fri Sat Sun 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 30 31*Mon Tue Wed Thu Fri Sat Sun 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 名师资料总结-精品资料欢迎下载-名师精心整理-第 18 页,共 42 页 -23 24 25 26 27 28 29 30*Mon Tue Wed Thu Fri Sat Sun 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 30 31*Mon Tue Wed Thu Fri Sat Sun 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 30*Mon Tue Wed Thu Fri Sat Sun 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 30 31*Mon Tue Wed Thu Fri Sat Sun 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 30 31*Mon Tue Wed Thu Fri Sat Sun 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 30*Mon Tue Wed Thu Fri Sat Sun 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 30 31*Mon Tue Wed Thu Fri Sat Sun 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 名师资料总结-精品资料欢迎下载-名师精心整理-第 19 页,共 42 页 -26 27 28 29 30*Mon Tue Wed Thu Fri Sat Sun 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 30 31 问题L:趣味程序设计抓交通肇事逃逸犯时间限制:1 Sec 内存限制:128 MB 提交:259 解决:166 提交 状态 讨论版 题目描述一辆卡车违反交通规则,撞人后逃跑,现场有三人目击事件,但都没有记住车号,只记下车号的一些特征。甲说:牌照的前2 位数字是相同的;乙说:牌照的后2位数字是相同的,但与前 2 位不同;丙是位数学家,他说:4 位的牌照号刚好是一个整数的平方。请根据以上线索求出牌照号输入无输出输出满足要求车牌号样例输入无样例输出无名师资料总结-精品资料欢迎下载-名师精心整理-第 20 页,共 42 页 -#include int main()printf(7744n);return 0;问题M:趣味程序设计反序数时间限制:1 Sec 内存限制:128 MB 提交:331 解决:219 提交 状态 讨论版 题目描述设 N 是一个四位数,它的9 倍恰好是其反序数,求N。输入无输出输出满足要求的4 位反序数样例输入无样例输出无提示反序数就是将整数的数字倒过来形成的整数。例如:1234 的反序数是4321.名师资料总结-精品资料欢迎下载-名师精心整理-第 21 页,共 42 页 -#include int main()int a,b,c,d,i;for(i=1000;i=2000;i+)a=i/1000;b=i/100%10;c=i/10%10;d=i%10;if(i*9=(d*1000+c*100+b*10+a)printf(%dn,i);return 0;问题 N:趣味程序设计新郎新娘时间限制:1 Sec 内存限制:128 MB 提交:278 解决:97 提交 状态 讨论版 题目描述三对情侣一起举行婚礼,三个新郎为A、B、C,三个新娘为X、Y、Z。有人不知道谁和谁结婚,于是询问了六位新人中的三位,但听到的回答是这样的:A 说他将和 X 结婚;X 说她的未婚夫是C;C 说他将和Z 结婚。这人听后知道他们在开玩笑,全是假话,请编程找出谁将和谁结婚。输入无输出输出为一行输出格式为*-*,表示*和*结婚,中间用空格隔开。名师资料总结-精品资料欢迎下载-名师精心整理-第 22 页,共 42 页 -样例输入无样例输出无#include int main()printf(A-Z B-X C-Yn);return 0;问题 O:趣味程序设计称重砝码时间限制:1 Sec 内存限制:128 MB 提交:93 解决:59 提交 状态 讨论版 题目描述一位商人有4 块砝码,各砝码重量不同且都是整磅数,而且用这4块砝码可以在天平上称1至 40 磅之间的任意重量(砝码可以放在天平的任一端),请问这4 块砝码各重多少?输入无输出输出一行4 个数表示 4 个砝码的重量,中间用空格隔开样例输入无名师资料总结-精品资料欢迎下载-名师精心整理-第 23 页,共 42 页 -样例输出无问题P:趣味程序设计求车速时间限制:1 Sec 内存限制:128 MB 提交:72 解决:5 提交 状态 讨论版 题目描述一辆以固定速度行驶的汽车,司机在上午10 点看到里程表上的读数是一个对称数(即这个数从左向右读和从右向左读是完全一样的),为 n。两小时后里程表上出现了一个新的对称数。问该车的速度是多少?新的对称数是多少?输入第一行输入t(0t19999),接下来的t 行输入一个n(0n109);输出每一行输出n 的下一个对称数m。样例输入6 1 11 99 789987 123454321 999999999 样例输出2 名师资料总结-精品资料欢迎下载-名师精心整理-第 24 页,共 42 页 -22 101 790097 123464321 1000000001 问题 Q:趣味程序设计谁是窃贼时间限制:1 Sec 内存限制:128 MB 提交:295 解决:138 提交 状态 讨论版 题目描述警察审问四名窃贼嫌疑犯。已知,这四人当中仅有一名是窃贼,还知道这四个人中每人要么是诚实的,要么总是说谎。他们给警察的回答是:甲说:“乙没有偷,是丁偷的。”乙说:“我没有偷,是丙偷的。”丙说:“甲没有偷,是乙偷的。”丁说:“我没有偷。”请根据这四个人的回答判断谁是窃贼。输入无输出请根据这四个人的回答判断谁是窃贼,窃贼用数值1 表示,不是窃贼用0 表示一行输出四个数,中间用空格隔开(按甲,乙,丙,丁的顺序)样例输入无样例输出无名师资料总结-精品资料欢迎下载-名师精心整理-第 25 页,共 42 页 -提示假设用 A、B、C、D 分别代表四个人,变量的值为1 代表该人是窃贼,则根据四个人的说法可列出4 个条件:B+D=1;B+C=1;A+B=1;A+B+C+D=1。#include int main()int i,A=1,B=0,C=0,D=0;for(i=1;i=4;i+)if(B+D=1&B+C=1&A+B=1)printf(%d%d%d%dn,A,B,C,D);break;else if(i=1)A=0;B=1;if(i=2)B=0;C=1;if(i=3)C=0;D=1;return 0;问题 R:趣味程序设计出售金鱼时间限制:1 Sec 内存限制:128 MB 提交:191 解决:25 提交 状态 讨论版 名师资料总结-精品资料欢迎下载-名师精心整理-第 26 页,共 42 页 -题目描述令狐冲将养的一缸金鱼分5 次出售:第 1 次卖出全部的一半加1/2 条;第 2 次卖出余下的三分之一加1/3 条;第 3 次卖出余下的四分之一加1/4 条;第 4 次卖出余下的五分之一加1/5条;最后卖出余下的11 条。问原来鱼缸中共有多少条鱼?答案是59 条。为了防止大家混AC,题目稍微改一下。令狐冲将养的一缸金鱼分m 次出售(m 的取值为2,或 3,或 4,或 5):第 1 次卖出全部的一半加1/2 条;第 2 次卖出余下的三分之一加1/3 条;第 3 次卖出余下的四分之一加1/4条;第 4 次卖出余下的五分之一加1/5 条;.;第 m-1 次卖出余下的m 分之一加1/m 条,最后卖出余下的11 条。问原来鱼缸中共有多少条鱼?若输入的m 是 5,则答案仍是59 条。输入每行输入一个m 值,m 的取值为2,或 3,或 4,或 5。输出对应输出原来鱼缸中共有多少条鱼?,输出一个数字即可。样例输入5 4 3 2 4 样例输出59 47 35 23 47 名师资料总结-精品资料欢迎下载-名师精心整理-第 27 页,共 42 页 -提示从 X23 开始试探,步长取2,前 4 次中,第 i 次出售后留下:XX(X1)/(i+1),第 4次出售后余下11 条。#include int main()int a,i,n;while(scanf(%d,&n)!=EOF)a=11;for(i=n;i=2;i-)a=(a*i+1)/(i-1);printf(%dn,a);return 0;问题S:趣味程序设计百钱百鸡时间限制:1 Sec 内存限制:128 MB 提交:446 解决:182 提交 状态 讨论版 题目描述中国古代数学家张丘建在他的算经 中提出了著名的“百钱买百鸡问题”:鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁、母、雏各几何?输入无输出输出翁、母、雏各几何?可能有多组,一组一行,数字之间用空格隔开。名师资料总结-精品资料欢迎下载-名师精心整理-第 28 页,共 42 页 -样例输入无样例输出无提示设鸡翁、鸡母、鸡雏的个数分别为x,y,z,题意给定共100 钱要买百鸡,若全买公鸡最多买20 只,显然x 的值在 020 之间;同理,y 的取值范围在033 之间,可得到下面的不定方程:5x3yz/3=100 及 xyz=100。所以此问题可归结为求这个不定方程的整数解。可通过对未知数可变范围的穷举,验证方程在什么情况下成立,从而得到相应的解。#include int main()int a,b;for(a=0;a20;a+)for(b=1;b33;b+)if(5*a+3*b+(100-a-b)/3)=100&(100-a-b)%3=0)printf(%d%d%dn,a,b,100-a-b);return 0;问题T:趣味程序设计谜语博士时间限制:1 Sec 内存限制:128 MB 提交:131 解决:97 提交 状态 讨论版 题目描述诚实族和说谎族是来自两个岛屿的不同民族,诚实族的人永远说真话,而说谎族的人永远说假话,一天,谜语博士遇到三个人,知道他们可能是来自诚实族或说谎族的。为了调查这三个人是什么族的,博士分别问了他们问题,下面是他们的对话:博士问:“你们是什么族的?”第一个人答:“我们之中有两个来自诚实族。”名师资料总结-精品资料欢迎下载-名师精心整理-第 29 页,共 42 页 -第二个人说:“不要胡说,我们之中只有一个诚实族的。”第三个人接着说:“对,就是只有一个诚实族的。”请根据他们的回答判断他们分别是哪个族的.输入无输出设说谎其值为0,诚实其值为1,输出这三个人的的值在一行上,中间用空格隔开样例输入无样例输出无提示假设这三个人分别为A、B、C,若说谎其值为0,若诚实其值为1,根据题目中三个人的话可分别列出:第一个人:a&a+b+c=2|!a&a+b+c!=2 第二个人:b&a+b+c=1|!b&a+b+c!=1 第三个人:c&a+b+c=1|!c&a+b+c!=1#include int main()int a,b,c;for(a=0;a=1;a+)for(b=0;b=1;b+)for(c=0;c=1;c+)名师资料总结-精品资料欢迎下载-名师精心整理-第 30 页,共 42 页 -if(a&a+b+c=2|!a&a+b+c!=2)if(b&a+b+c=1|!b&a+b+c!=1)if(c&a+b+c=1|!c&a+b+c!=1)printf(%d%d%dn,a,b,c);return 0;return 0;问题 U:趣味程序设计猜牌术()时间限制:1 Sec 内存限制:128 MB 提交:85 解决:23 提交 状态 讨论版 题目描述魔术师利用一幅牌中13 张黑桃,预先将它们排好后迭在一起,牌面朝下,对观众说:我不看牌,只数数就可以猜到每张牌是什么,我大声数数,你们听,不信?你们就看,魔术师将最上面的那张牌数为1,把它翻过来正好是黑桃A,将黑桃 A 话在桌子上,然后按顺序从上到下数手中的余牌,第二次数1、2,将第一张牌放在这迭牌的下面,将第二张牌翻过来,正好是黑桃2,也将它放在桌子上,第三次数1、2、3,将前面两张依次放在这迭牌的下面,再翻第三张牌正好是黑桃3,这样依次进行,将13 张牌全部翻出来,准确无误。问魔术师手中的牌原始次序是怎样安排的?如果不是确定的张牌,而是n 张牌呢?输入每行输入一个n 值(n 不超过 100),表示牌的总张数.名师资料总结-精品资料欢迎下载-名师精心整理-第 31 页,共 42 页 -输出对应的原始排列次序.样例输入15 14 13 样例输出1 11 2 8 7 3 13 9 6 4 15 14 12 10 5 1 5 2 14 12 3 11 7 8 4 6 13 10 9 1 8 2 5 10 3 12 11 9 4 7 6 13 问题 V:趣味程序设计舍罕王的失算时间限制:1 Sec 内存限制:128 MB 提交:316 解决:73 提交 状态 讨论版 题目描述相传国际象棋是古印度舍罕王的宰相达依尔发明的。舍罕王十分喜爱象棋,决定让宰相自己选择何种赏赐。这位聪明的宰相指着8X8 共 64 格的象棋棋盘说:陛下,请您赏给我一些麦子吧。就在棋盘的第1 格中放 1 粒,第 2 格放 2粒,第 3 格放 4 粒,以后每一格都比前一格增加一倍,依此放完棋盘上64 格,我就感激不尽了。舍罕王让人扛来一袋麦子,他要兑现他的许诺。请问,国王能兑现他的许诺吗?共要多少麦子赏赐他的宰相?格子数不是64 呢?输入输入 n 表示格子数(n 不超过 64).名师资料总结-精品资料欢迎下载-名师精心整理-第 32 页,共 42 页 -输出输出麦子总数.样例输入3 64 样例输出7 18446744073709551615 提示数据类型,在 VC 中调试用unsigned _int64,提交时改成unsigned long long#include int main()unsigned long long sum,t;int n,i;while(scanf(%d,&n)!=EOF)sum=t=1;for(i=2;i=n;i+)t=t*2;sum+=t;if(n=64)printf(18446744073709551615n);else printf(%lldn,sum);return 0;名师资料总结-精品资料欢迎下载-名师精心整理-第 33 页,共 42 页 -问题 W:趣味程序设计怎样存钱利最大时间限制:1 Sec 内存限制:128 MB 提交:40 解决:8 提交 状态 讨论版 题目描述假设银行整存整取存款不同期限的月息利率分别为:0.63%期限=1 年0.66%期限=2 年0.69%期限=3 年0.75%期限=5 年0.84%期限=8 年利息=本金*月息利率*12*存款年限。现在某人手中有2000 元钱,请通过计算选择一种存钱方案,使得钱存入银行20 年后得到的利息最多(假定银行对超过存款期限的那一部分时间不付利息)。提示:为了得到最多的利息,存入银行的钱应在到期时马上取出来,然后立刻将原来的本金和利息加起来再作为新的本金存入银行,这样不断地滚动直到满20 年为止,由于存款的利率不同,所以不同的存款方法(年限)存 20 年得到的利息是不一样的。分析题意,设 2000元存 20 年,其中 1 年存 i1 次,2 年存 i2 次,3 年存 i3 次,5 年存 i5 次,8 年存 i8 次,则到期时存款人应得到的本利合计为:2000*(1+rate1)i1*(1+rate2)i2*(1+rate3)i3*(1+rate5)i5*(1+rate8)i8其中 rateN 为对应存款年限的利率。根据题意还可得到以下限制条件:0=i8=2 0=i5=(20-8*i8)/5 0=i3=(20-8*i8-5*i5)/3 0=i2=(20-8*i8-5*i5-3*i3)/2 0=i1=20-8*i8-5*i5-3*i3-2*i2 可以用穷举法穷举所有的i8、i5、i3、i2 和 i1 的组合,代入求本利的公式计算出最大值,就是最佳存款方案。输入输出样例输入0.63,0.66,0.69,0.75,0.84 名师资料总结-精品资料欢迎下载-名师精心整理-第 34 页,共 42 页 -样例输出0 4 0 0 0 8841.01 问题X:趣味程序设计猜牌术(二)时间限制:1 Sec 内存限制:128 MB 提交:37 解决:4 提交 状态 讨论版 题目描述魔术师将红桃和黑桃全部迭在一起,牌面朝下放在手中,对观众说:最上面一张是黑桃A,翻开后放在桌上。以后,从上至下每数两张依次放在最底下,第三张给观众看,便是黑桃 2,放在桌上后再数两张依次放在最底下,第三张给观众看,是黑桃3。如此下去,观众看到放在桌子上的牌的顺序是:黑桃A2345678910JQK 红桃A2345678910JQK 问魔术师此次手中牌的原始顺序是什么?输入输入 2 个字符,((r-红桃;b-黑桃;m-梅花;f-方块):输出输出原始顺序.若输入r b 则输出b1 r6 b10 b2 r12 r3 b3 b11 r9 b4 r7 b12 b5 r4 r13 b6 b13 r11 b7 r5 r1 b8 r8 r10 b9 r2 样例输入r,b 名师资料总结-精品资料欢迎下载-名师精心整理-第 35 页,共 42 页 -样例输出b1 r6 b10 b2 r12 r3 b3 b11 r9 b4 r7 b12 b5 r4 r13 b6 b13 r11 b7 r5 r1 b8 r8 r10 b9 r2 问题Y:趣味程序设计爱因斯坦的数学题时间限制:1 Sec 内存限