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 }

    运行结果:

     

         

  • 相关阅读:
    stress-Linux系统压力测试工具使用及系统负载很高的几种场景测试
    execsnoop-短时进程追踪工具
    走迷宫--DFS
    马踏棋盘--dfs
    查询前缀出现的次数----字典树
    找两个质数和为偶数的两个数
    煤气灶---递归
    求合力
    hdu2089---不要62(数位DP)
    轻重匹配
  • 原文地址:https://www.cnblogs.com/bboykaku/p/12601748.html
Copyright © 2011-2022 走看看