2017.10.21

韩信点兵

时间限制:3000 ms  |  内存限制:65535 KB
难度:1
 
描述
相传韩信才智过人,从不直接清点自己军队的人数,只要让士兵先后以三人一排、五人一排、七人一排地变换队形,而他每次只掠一眼队伍的排尾就知道总人数了。输入3个非负整数a,b,c ,表示每种队形排尾的人数(a<3,b<5,c<7),输出总人数的最小值(或报告无解)。已知总人数不小于10,不超过100 。
 
输入
输入3个非负整数a,b,c ,表示每种队形排尾的人数(a<3,b<5,c<7)。例如,输入:2 4 5
输出
输出总人数的最小值(或报告无解,即输出No answer)。实例,输出:89
样例输入
2 1 6
样例输出
41


#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main(int argc, char *argv[])
{
int a,b,c;
int num;
int array[3];
int count=0; //计数有多少个数符合条件
int array_count[10]; //存储符合条件的数
int i=0;
scanf("%d",&a);
scanf("%d",&b);
scanf("%d",&c);
for(num=10;num<101;num++)
{
array[0]=num%3; //韩信点兵的原理
array[1]=num%5;
array[2]=num%7;

if(array[0]==a&&array[1]==b&&array[2]==c)
{
array_count[count]=num;
count++;
}
}

if(count==0)
printf("No answer ");
else
printf("%d ",array_count[0]); //array_count[0]一定是最小的


return 0;
}





原文地址:https://www.cnblogs.com/panlangen/p/7704795.html