zoukankan      html  css  js  c++  java
  • OJ随笔——【1088-N!】——同余定理

    题目如下:

    Description

    请求N!(N<=10000),输出结果对10007取余
    输入
    每行一个整数n,遇到-1结束。
    输出
    每行一个整数,为对应n的运算结果。

     

    Sample Input

    1
    2
    -1
     

    Sample Output

    1
    2

    分析思路:

      题目思路很简单,每读取一个输入就输出对应输入的阶乘。直到遇到输入为-1时结束程序。

    核心问题:

      这个题目在写的时候遇到的难点是N!实在是太大了,根本储存不下,之后试了long long int 也还是只能储存到20几就会溢出。解决这个问题的核心通过查询资料后找到了“同余定理”。

    同余定理:在本题中就是,(N!)%10007 = [(N%10007)*((N-1)%10007)*((N-2)%10007)……]%10007

    百度百科-同余定理:http://baike.baidu.com/link?url=5wSVwGsN3xHBzF638XMHQ3f2UbjwcKEgjjxvL_aA4sqfgtlV73FP6ExftXGeohPEVQ_wksMDNrGtAlCGobwo602y2_o4r04gYMrRvh9cvpT40m3z-Go6PhYCKqUSYIQ7

    最后附上我的程序源码:

    #include <stdio.h>
    int main ()
    {
        int n;
        while (n!=EOF)
        {
            int sum = 1;
            scanf ("%d",&n);
            if (n==-1) break;
            for (;n>0;n--)
            {
                sum = sum*n%10007;
            }
            printf ("%d
    ",sum);
        }
        return 0;
    }

    2016-10-18

  • 相关阅读:
    树莓派4B
    SpringBoot 自定义 info Actuator 原理
    RestTemplate翻译serviceId过程
    ISA, ABI, API区别
    01.编译器结构
    【Git123】Git SSH Key支持多账号
    【消息中间件123】Solace PubSub+ Event Broker介绍
    【ETL123】
    【Http123】Http Timeout
    【性能123】Linux性能之“平均负载”
  • 原文地址:https://www.cnblogs.com/xtualong/p/5972177.html
Copyright © 2011-2022 走看看