日常-acm-韩信点兵

   相传韩信才智过人,从不直接清点自己军队的人数,只要让士兵先后以三人一排,五人一排,七人一排地变换队形,而他每次只看一眼队伍的排尾就知道人数了。输入包含多组数据,每组数据包含三个非负整数a,b,c,表示每种队形排尾的人数(a<3,b<5,c<7),输出总人数的最小值(或者报告无解)。已知总人数不小于10,不超过100。

  样例输入:

  2 1 6

  2 1 3

  样例输出:

  Case 1:41

  Case 2:No answer

 1 #include <iostream>
 2 #include<cstdio>
 3 #include<windows.h>
 4 
 5 using namespace std;
 6 //以上文件部分相当于#include<stdio.h>
 7 
 8 int main()
 9 {
10     int a,b,c;                          //定义数据
11     int cishu=0;                        //第几次输入
12     while(cin>>a>>b>>c)
13     {
14         cishu++;                        //进来就是要输出
15         int flag=0;                     //flag为0就是No answer
16         for(int i=10; i<=100; i++)      //人数范围是10-100
17         {
18             //3,5,7三次走法,排尾人数就是整除3,5,7以后的余数
19             //案例不多所以直接暴力破解就好
20             //所有可能取值全部拿出来尝试
21             //人数减差值就是一个可以刚好可以整除的数
22             if((i-a)%3==0&&(i-b)%5==0&&(i-c)%7==0){
23                 cout<<"Case "<<cishu<<":"<<i<<endl;
24                 flag=1;                 //输出以后更改flag
25                 break;
26             }
27         }
28         if(flag==0)                     //输出不存在的情况
29             cout<<"Case "<<cishu<<":No answer"<<endl;
30     }
31     system("pause");
32     return 0;
33 }

 

posted @ 2017-12-02 23:43  一点都不萌  阅读(212)  评论(0编辑  收藏  举报