2-1水仙花数
#include<stdio.h>
int main()
{
for(int i=100;i<1000;i++)
{
int hundred=i/100%10;
int ten=i/10%10;
int one=i%10;
int sum=hundred*hundred*hundred+ten*ten*ten+one*one*one;
if(sum==i)
printf("水仙花数%d",i);
}
return 0;
}
要点:个位、十位、百位的求法。
习题2-2 韩信点兵(hanxin)
相传韩信才智过人,从不直接清点自己军队的人数,只要让士兵先后以三人一排、五人一排、七人一排地变换队形,而他每次只掠一眼队伍的排尾就知道总人数了。输入包含多组数据,每组数据包含3个非负整数a
,b
,c
,表示每种队形排尾的人数(a<3,b<5,c<7),输出总人数的最小值(或报告无解)。已知总人数不小于10,不超过100。输入到文件结束为止。
思路:仍然从1-100中依次寻找,能够满足条件的数。暴力求解。
首先,定义abc三个余数,再定义Case满足条件。从键盘获取abc,先检验它们是否符合(a<3,b<5,c<7)。如符合,则进行下一阶段:开始在1-100的数中寻找符合条件的数,如果符合,则打印。此时定义了一个新的变量k,用来控制No answer的情况。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int a, b, c;
int Case = 0;
scanf("%d%d%d", &a, &b, &c);
if (a >= 3 || b >= 5 || c >= 7)
{
printf("Error\n");
return 0;
}
int k = 0;
for (int i = 0; i <= 100; i++)
{
if (i % 3 == a && i % 5 == b && i % 7 == c)
{
printf("case:%d %d\n", ++Case, i);
k= 1;
break;
}
}
if (k == 0)
{
printf("No answner\n");
}
return 0;
}