当前位置:   article > 正文

韩信点兵(Hanxin)(C++)_韩信点兵c语言编程思路

韩信点兵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都没有找到这样的数字,就把士兵打一顿!!
    }

    }

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号