韩信点兵(Hanxin)(C++)

一、题目:
韩信才智过人,从不直接清点自己军队的人数,只要让士兵先后以三人一排、五人一排、七人一排地变换队形,而他每次只瞟一眼队伍的排尾就知道总人数了。输入3个非负整数a,b,c表示每种队伍排尾的人数(a<3,b<5,c<7),输出总人数的最小值(或报告无解)。已知总人数不小于10,不超过100。
样例输入:2 1 6
样例输出:41
样例输入:2 1 3
样例输出:No answer

二、解题思路:
排尾人数实则就是将总人数分别对3,5,7取余的余数,只要将总人数去掉余数在对3,5,7取余为0即可求出答案。

 

我直接暴力利用穷举法,10——100的数字全来一遍一一对应!

#include<iostream>
#include<stdio.h>

using namespace std;
//韩信点兵。相传韩信清点士兵从来不直接清点。只要让士兵三人一排、五人一排、七人一排地变换队形,每次只要看队尾的几个人就可以得出士兵的数量。输入包含多组数据,每组数据包含3个非负整数a, b, c,表示每种队列排尾的人数(a < 3,b < 5,c < 7),输出为符合的人数最小值(全部不符合就输出No answer)。总人数不小于10,不超过100。输入到文件结束为止。
    
int main() {
    int a, b,c,t;
    cin >> a >> b >> c;
    for (int i = 10; i <= 100; i++) {
        if ((i - a) % 3 == 0 && (i - b) % 5 == 0 && (i - c) % 7 == 0) {
            cout << i << endl;
            t = 1;//用来判断到底有没有这样的数字
        }
        
    }if (t != 1) {
        cout << "这些士兵我怀疑是乱站的吧,拉出去砍头" << endl;

//如果10-100都没有找到这样的数字,就把士兵打一顿!!
    }

    }

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值