• 蓝桥杯决赛试题:求1到n的最小公倍数


    为什么1小时有60分钟,而不是100分钟呢?这是历史上的习惯导致。
    但也并非纯粹的偶然:60是个优秀的数字,它的因子比较多。
    事实上,它是1至6的每个数字的倍数。即1,2,3,4,5,6都是可以除尽60。
    1  2  3  4  5  6

    我们希望寻找到能除尽1至n的的每个数字的最小整数。

    不要小看这个数字,它可能十分大,比如n=100, 则该数为:
    6972 0375 2297 1247 7164 5338 0893 5312 3035 5680 0

    请编写程序,实现对用户输入的 n (n<100)求出1~n的最小公倍数。

    例如:
    用户输入:
    6
    程序输出:
    60

    用户输入:
    10
    程序输出:
    2520

     1 #include <stdio.h>
     2 #include <math.h>
     3 #include <stdlib.h>
     4 #define MAX 100000
     5 #define N 101
     6 void init(double *r)
     7 {
     8     int i;
     9     for (i=0; i<N; i++)
    10         r[i]=0;
    11 }
    12 void cpy(double *r,double *t)
    13 {
    14     int i;
    15     for (i=0; i<N; i++)
    16         t[i]=r[i];
    17 }
    18 void add(double *r,double *t)
    19 {
    20     int i;
    21     double carry=0;
    22     for (i=N-1; i>=0; i--)
    23     {
    24         r[i] = r[i]+t[i]+carry;
    25         if (r[i] >= MAX)
    26         {
    27             r[i] -= MAX;
    28             carry = 1;
    29         }
    30         else
    31         {
    32             carry = 0;
    33         }
    34     }
    35 }
    36 int mod(double *r,double b)
    37 {
    38     int i;
    39     double tmp,remain=0,xx;
    40     for (i=0; i<N; i++)
    41     {
    42         tmp = r[i]+remain;
    43         xx = modf(tmp/b,&r[i]);
    44         remain = fmod(tmp,b)*MAX;
    45     }
    46     return xx?1:0;
    47 }
    48 
    49 void main()
    50 {
    51     double n,r[N],a[N],b[N],i;
    52     int j=0;
    53     init(r);
    54     scanf("%lf",&n);
    55     r[N-1]=n;
    56     for (i=n-1;i>=n/2;i--)
    57     {
    58         cpy(r,a);cpy(r,b);
    59         while(mod(a,i)!=0)
    60         {
    61             add(r,b);
    62             cpy(r,a);
    63         }
    64     }
    65     while (r[j] == 0)         j++;
    66     printf("%.0lf",r[j++]);
    67     while (j<N-1)        printf("%05.0lf",r[j++]);
    68     printf("\n");
    69 }
    字节跳动内推

    找我内推: 字节跳动各种岗位
    作者: ZH奶酪(张贺)
    邮箱: cheesezh@qq.com
    出处: http://www.cnblogs.com/CheeseZH/
    * 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    hmac
    struct模块-黏包的解决方法
    PHPCMS快速建站系列
    Notepad++搜索中的正则应用
    用var 变量=函数名 方式调用函数时如何传值的问题
    ThInkPHP中的常量
    css cursor 的可选值(鼠标的各种样式)
    JS实现用键盘控制DIV上下左右+放大缩小与变色
    PHP定义数组常量
    FormData实现文件上传实例
  • 原文地址:https://www.cnblogs.com/CheeseZH/p/2426151.html
Copyright © 2020-2023  润新知