韩信点兵(c语言)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了韩信点兵(c语言)相关的知识,希望对你有一定的参考价值。

话说这天韩信在项王手下吃了败仗,最后带着自己零散的部队撤出了战场.这个时候他想知道自己部队士兵的具体人数(当然了他也不可能从我们项王手下带走超过100的士兵的)。聪明的韩信也不想直接清点自己军队的人数的(再浪费时间的估计这些士兵他也带不走了……),于是他让士兵先后以三人一排,五人一排,七人一排然后他只看了一眼队伍的排尾人数(分别用a , b, c表示)就知道了总人数。现在聪明的你们如果给你三个非负整数a,b,c,你知道军队的总人数吗?已知总人数不超过100,不小于10。
Input

包括多组测试数据,每组数据包括三个非负整数 a,b,c 。
Output

如果军队的总人数在10—100之间则输出军队的总人数,否则输出 No answer。
Sample Input

2 1 6
2 1 3

Sample Output

41
No answer
求答案!!!!!!!!!!!!

你完全没有按照题目要求做。

#include <stdio.h>
void main()
long long i,A,B,C,D,E,F,G,H,a,b,c,d,e,f,g,h;
scanf("%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld",&A,&B,&C,&D,&E,&F,&G,&H,&a,&b,&c,&d,&e,&f,&g,&h);
for(i=A;;i++)
if(i%A==a&&i%B==b&&i%C==c&&i%D==d&&i%E==e&&i%F==f&&i%G==g&&i%H==h)
printf("%lld",i);break;

运行示例:

参考技术A #include<stdio.h>
void main()

int a,b,c,i;
while(1)

printf("请输入三个数:");
scanf("%d%d%d",&a,&b,&c);
for(i=10;i<=100;i++)

if(i%3==a && i%5==b && i%7==c)
printf("%d\n",i);break;


if(i>100) printf("No answer\n");

参考技术B #include <stdio.h>
int main(void)

int a,b,c;
scanf("%d %d %d",&a,&b,&c);
int i;
int isnoanswer=1;
for(i=100; i>=10; --i)

if(i%3==a&&i%5==b&&i%7==c)


isnoanswer=0;
break;


if(isnoanswer)
printf("no answer\n");
else
printf("%d\n",i);
return 0;
本回答被提问者和网友采纳
参考技术C #include<stdio.h>

int main()



int a,b,c,n;

do



scanf("%d%d%d",&a,&b,&c);

if(a<3&&b<5&&c<7)

n=a*70+b*21+c*15-210;

if(n>=10&&n<=100&&a<3&&b<5&&c<7)

printf("Case 1:%d\n",n);

else printf("Case 2:No answer\n");

while(n>=10&&n<=100);

return 0;

参考技术D # include<stdio.h>
int main()

int n,a,b,c;
scanf("%d%d%d",&a,&b,&c);
for(n=10;n<=200;n++)

if (n%3==a && n%5==b && n%7==c)

if(n<=100)

printf("%d",n);
break;

else

printf("No answer");



习题6 韩信点兵

题目如下

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

样例输入

2 1 6

样例输出

41

 

首先此处为实现在控制器输入参数进行输出,引用scanner

import java.util.Scanner;

public class Hanxindianbing {

    public static void main(String[] args){
        
    }
}

将scanner实例化,

import java.util.Scanner;

public class Hanxindianbing {

    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        int a=scanner.nextInt();
        int b=scanner.nextInt();
        int c=scanner.nextInt();
        
    }
}

如题,只要让士兵先后以三人一排、五人一排、七人一排地变换队形,而他每次只掠一眼队伍的排尾就知道总人数了。

也就是说总人数%3=a 且 总人数%5=b 且 总人数%7=c;

定义总人数为sum (int sum) 且总人数不小于10人,不超过100人。

接下来利用一层for循环来判断

import java.util.Scanner;

public class Hanxindianbing {

    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        int a=scanner.nextInt();
        int b=scanner.nextInt();
        int c=scanner.nextInt();
        for(int sum=10;sum<=100;sum++){
            if(sum%3==a && sum%5==b && sum%7==c){
                
            }
        }
    }
}

下面输出,题目中还提到,输出总人数的最小值,那么我的方法是输出一次之后就跳出循环。

import java.util.Scanner;

public class Hanxindianbing {

    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        int a=scanner.nextInt();
        int b=scanner.nextInt();
        int c=scanner.nextInt();
        for(int sum=10;sum<=100;sum++){
            if(sum%3==a && sum%5==b && sum%7==c){
                System.out.println(sum);break;
            }
        }
    }
}

在控制台输入2、1、6

结果

以上是关于韩信点兵(c语言)的主要内容,如果未能解决你的问题,请参考以下文章

C语言韩信点兵(容易超时)

C语言编程:韩信点兵问题拜托各位了 3Q

关于大一的C语言问题,韩信点兵。。

C语言,韩信点兵编程,看看我的错在哪?

c语言编程序:韩信点兵,韩信有一队伍,你想知道有多少人,就让士兵报数,按从1至5报数,最末一个士兵报的

c语言简单程序