zoukankan      html  css  js  c++  java
  • 韩信点兵问题

    问题描述:求最小整数n,使得n%3=a,n%5=b,n%7=c,并且使得10<=n<=100,如果不在这个区间,输出No,否则输出该数。

    问题解析:70是5和7的公倍数,并且70%3=1,所以如果n%3=a,则先假设70*a是n的一部分;这种情况下加上或减去5或7的某倍后对该描述没有影响

         同理,21是3和7的公倍数,21%5=1,所以如果n%5=b,也假设21*b是n的一部分;这种情况下加上或减去3或7的某倍后对该描述没有影响

         同理,15是3和5的公倍数,15%7=1,所以如果n%5=c,也假设15*c是n的一部分;这种情况下加上或减去3或5的某倍后对该描述没有影响

         综上,暂且假设n=70*a+21*b+15*c;

         又3、5、7的公倍数为105,n加上或者减去105 的某倍对该描述没影响,所以n=70*a+21*b+15*c-k*105;

    例子代码:

     1 //韩信点兵的最小值
     2 #include<stdio.h>
     3 int a,b,c,n;
     4 int main()
     5 {
     6     scanf("%d%d%d",&a,&b,&c);
     7     n=70*a+21*b+15*c;
     8     while(n-105>0) n=n-105;
     9     if(10<=n&&n<=100) printf("%d
    ",n);
    10     else printf("No
    ");
    11     return 0;
    12 }

    运行结果:

     

         

  • 相关阅读:
    sqlserver中函数和存储过程的区别
    sql 经典面试题
    sqlserver 时间处理函数
    在GROUP BY中"做文章"(五种中简答方法!)
    SQL 非等价连接
    GROUP BY 两个字段(或者多个字段的时候)
    WCF-错误集合001
    DOM
    DOM的排他功能及显示隐藏功能
    预解析
  • 原文地址:https://www.cnblogs.com/bboykaku/p/12601748.html
Copyright © 2011-2022 走看看