• 暑假热身 A. GCC


    GCC编译器是一个由GNU项目维护的编译系统,它支持多种编程语言的编译。但是它并不包含数学运算符“!”。在数学中,这个符号代表阶乘。表达式n!的意思是从1到n的所有整数的乘积。

    例如,4!=4*3*2*1=24. (0!定义为1) 现在请你写程序计算一下 (0! + 1! + 2! + 3! + 4! + ... + n!)%m。

     

    Input

    第一行是一个整数T,代表了测试数据的组数。

    每组测试数据单独一行,包括一个整数n和m,用一个空格隔开。

    0 < T <= 20 0 <= n < 10^100 0 < m <= 10000

     

    Output

    对应每组输入,单独输出一行,给出(0! + 1! + 2! + 3! + 4! + ... + n!)%m的结果。

     

    Sample Input

    1
    10 1017

    Sample Output

    424

    每算一次取一次余有效减少运算量。
     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cmath>
     4 using namespace std;
     5 int main()
     6 {
     7     long m;
     8     long n = 0;
     9     char ch[110];
    10     int num, i;
    11 
    12     cin >> num;
    13     for (int test = 1; test <= num; test++)
    14     {
    15         scanf("%s %ld", ch, &m);
    16         for (i = 0; ch[i] != ''; i++)
    17             ;
    18         int len = i;
    19         if(len>=7)
    20         {
    21             n=m-1;
    22         }
    23         else
    24         {
    25             int k = 1;
    26             n = ch[len-1]-'0';
    27             for (int j = len-2; j >= 0; --j)
    28             {
    29                 n += long((ch[j] - '0') * pow(10.0, double(k)));
    30                 k ++;
    31                 if (n >= m)
    32                 {
    33                     n = m-1;
    34                     break;
    35                 }
    36             }
    37         }
    38         long long s = 1;
    39         for (i = n; i >= 1; i--)
    40         {
    41            s = (1 + i * s) % m;
    42            //s = 1 % m + ((i % m) * (s % m)) % m;
    43         }
    44         s %= m;
    45         cout << s << endl;
    46     }
    47     return 0;
    48 }
    View Code
  • 相关阅读:
    JQuery实现滚动广告
    写链表时报HEAP CORRUPTION DETECTED: before Normal block
    ubuntu 运行sh提示unexpected operator
    解决Visual C++ 6 绿色版 Gallery 目录为空的问题
    写堆栈的时候报的奇怪的错。
    ubuntu开启SSH服务
    ubuntu修改runlevel
    Hello.Android.3rd.Edition——读书笔记
    java程序员应该掌握的10技能
    格式化数字的方法
  • 原文地址:https://www.cnblogs.com/dzzy/p/4733968.html
Copyright © 2020-2023  润新知