韩信点兵(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语言)的主要内容,如果未能解决你的问题,请参考以下文章