声明:摘选自“ 算法竞赛入门经典(第2版)”作者: 刘汝佳 / 陈锋 ISBN:9787302291077
1,水仙花数
输出100~999中的所有水仙花。若3位数ABC满足ABC = A ,则称其为水仙花数。例如
,所以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;
}