1. 程式人生 > >演算法的樂趣c/c++ —— 1.1.1入門習題

演算法的樂趣c/c++ —— 1.1.1入門習題

宣告:摘選自“ 演算法競賽入門經典(第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;
}