算法的乐趣c/c++ —— 1.1.1入门习题

本文精选《算法竞赛入门经典》中的三道题目,包括水仙花数判断、韩信点兵问题及倒三角形打印,通过C语言代码实现,旨在帮助读者理解和掌握基本算法原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

声明:摘选自“ 算法竞赛入门经典(第2版)”作者:  刘汝佳  /  陈锋   ISBN:9787302291077

1,水仙花数

输出100~999中的所有水仙花。若3位数ABC满足ABC = A A ^ {3} + B ^ {3} + C ^ {3} = ABC ,则称其为水仙花数。例如

153 = 1 ^ {3} + 5 ^ {3} + 3 ^ {3},所以153是水仙花数.C语言实现:

#include<stdio.h>
int main()
{
	/*定义输入数字与个、十、百*/ 
	int num, ge, shi, bai;
	scanf("%d", &num);
	ge = num % 100 %10;
	shi = num / 10 % 10;
	bai = num / 100;
	if(num == (bai*bai*bai + shi*shi*shi + ge*ge*ge))
	{
		printf("%d", num);
	}	
	else
	{
		printf("不是水仙花数!");
	}		
	return 0;
}

2,韩信点兵

相传韩信才智过人,从不直接清点自己军队的人数,只要让士兵先后以三人一排,五人一排,七人一排地变换队形,而他每次只掠一眼队伍的排尾就知道总人人了。输入包含多组数据,每组数据包含3个非负整数a,b,c,表示每种队形排尾的人数(a <3,b <5,c <7) ,输出总人数的不小于10,不超过100. 
样例输入:
2 1 6
2 1 3
样例输出:
案例1:41
案例2:无答案
 

#include<stdio.h>
int main()
{
	int a, b, c;
	scanf("%d%d%d", &a,&b,&c);
	for(int i=10; i<101; i++)
	{
		if(i%3 == a)
		{
			if(i%5 == b)
			{
				if(i%7 == c)
				{
					printf("%d", i);
					return 0 ;
				}
			}
		}
	}	
	printf("No answer");	
	return 0;	
}

3,输入正整数n≤20,输出一个n层的倒三角形。例如,n = 5时输出如下:

#include<stdio.h>
int main()
{
	int level;
	scanf("%d", &level);
	int num = level;
	for(int i=0; i<=level; i++)
	{
		for(int j=0; j<i; j++)
		{
			printf(" ");
		}
		for(int m=0; m<(2*num-1); m++)
		{
			printf("#");
		}
		for(int n=0; n<i; n++)
		{
			printf(" ");
		}
		num--;
		printf("\n");
	}
	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值