ACM程序设计与竞赛作业 下载本文

内容发布更新时间 : 2024/12/23 5:52:01星期一 下面是文章的全部内容请认真阅读。

时间限制: 1 Sec 内存限制: 128 MB

提交: 70 解决: 44 [提交][状态][讨论版]

题目描述

编写算法对输入的一个整数,判断它能否被3,5,7整除,并输出以下信息之一: 能同时被3,5,7整除;

能被其中两个数(要指出哪两个)整除; 能被其中一个数(要指出那一个)整除; 不能被3,5,7任一个整除;

输入

输入一个整数<100000;

输出

如果都能整除输出“all\ 如果都不能整除输出\

如果能被3和5整除则输出“3 5”。中间有一个空格, 注意按由小到大输出。

样例输入

35

样例输出

5 7

#include void main() {

long n; int k; scanf(\

k=((n%3==0)+(n%5==0)*2+(n%7==0)*4);//判断整数是否能被2,3,5整除; switch(k) { case 7:printf(\ case 6:printf(\

case 5:printf(\ case 4:printf(\ case 3:printf(\ case 2:printf(\ case 1:printf(\ case 0:printf(\}//用switch语句输出结果; }

心得:这题主要考察输入输出问题,首先输入一个整数,运用语句k=((n%3==0)+(n%5==0)*2+(n%7==0)*4),判断这个数能否被2,3,5整除,用switch语句输出所有可能发生的结果,然后输出题目中所要求输出的结果,其中用switch语句起到了优化算法的作用。

14问题A警察抓小偷

时间限制: 1 Sec 内存限制: 128 MB

提交: 115 解决: 88 [提交][状态][讨论版]

题目描述

警察局抓了a,b,c,d,4名小偷嫌疑犯,其中只有一个人是小偷,审问中,a说:我不是小偷,b说:c是小偷,c说:小偷肯定是d,d说:c在冤枉人。 现在已经知道4个人中3人说的是真话,一人说的是假话,问到底谁是小偷。

输入 输出

小偷是c

样例输入 样例输出

小偷是c

#include void main() { int x; for(x=1;x<=4;x++)//执行4次循环;

if(((x!=1)+(x==3)+(x==4)+(x!=4))==3)//判断是否有三个人说真话的情况; printf(\}

心得:这个题目主要考察把文字信息转化为数字信息,即信息数字化,把A,B,C,D看成1,2,3,4;x定义为小偷,然后把A,B,C,D四人所说的话变成数字语言,判断当他们四个人有三个人说真话的情况,然后以把数字变成字母输出。

15问题 B: n!

时间限制: 1 Sec 内存限制: 128 MB

提交: 262 解决: 162 [提交][状态][讨论版]

题目描述

输入一个整数N,输出它的阶乘。

输入

输入一个整数<20;

输出

输出它的阶乘

样例输入

5

样例输出

120

提示

#include int main() { int add(int m);//对add函数进行声明; int n,sum; scanf(\

sum=add(n); printf(\ return 0; } int add(int n)//定义add函数 { int f; if (n==0||n==1) { f=1; }//判断当n等于0和1这两种情况; else f=n*add(n-1);//调用add函数求值; return f; }

心得:这里主要运用函数的递归调用,首先用if对输入的数进行判断,看是否为1和0,如果是,那么输出其阶乘等于1,如果不是那么调用函数f=n*add(n-1)进行求值,add函数总共被调用了n次,求得最后的结果,输出。

16汉诺塔问题

时间限制: 1 Sec 内存限制: 128 MB

提交: 224 解决: 138 [提交][状态][讨论版]

题目描述

把N个盘子从A柱子借助B柱子移到C柱子,要求每次只能移动一个盘子,并且小盘子不能放到大盘子上。问如何移动。

输入

输入盘子的个数N(<=10)

输出

输出移动的次数。

样例输入

3

样例输出

7

提示

#include int main() {

int i,j,n,sum; scanf(\ j=1;

if(n!=1)//去除盘子的个数为1的情况;

{

for(i=1;i<=n;i++) {

j=j*2; }

sum=j-1;//求盘子移动的次数; }

else sum=1;

printf(\ return 0; }

心得:这题主要考察循环与递归问题,先假设盘子的个数,取几个特殊值,找出移动盘子次数的规律。这个编程首先判断盘子个数,如果是1,则输出1次,如果不是1,执行n次循环,求得j,然后求出移动盘子的次数j-1,输出。

17问题 D: 猴子吃桃子问题(递归) 时间限制: 1 Sec 内存限制: 128 MB

提交: 98 解决: 87 [提交][状态][讨论版]

题目描述

一只猴子摘了若干桃子,每天吃现有桃子的一半多一个,到第10天时就只有一个桃子了,求原来有多少个桃。