水仙花数和韩信点兵问题

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;
}


 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值