Olympian Math Problem

这两题都是ACM各大网络赛的“签到题”,可以退出,只要不是徐州这种特别变态的赛区,一般总有一道不算难的题。

爱丽丝,一个年级的学生66正在考虑一个奥林匹克数学问题,但她感到如此绝望,以至于她哭了。她的同学鲍勃对这个问题一无所知。所以他想让你帮他。问题是:

我们表示K!k!:

K!=1\乘以2\c点\乘以(k-1)\kk!=1×2×⋯×(k−1)×k

我们表示SS:

S=1\乘以1!+2\乘以2!+\cdots+S=1×1!+2×2!+⋯+
(n-1)\次数(n-1)!(n−1)×(n−1)!

然后SS模块nn是_

您将得到一个整数。nn.

你得计算一下SS模数nn.

输入

第一行包含一个整数。T(T_Le 1000)T(T≤1000),表示测试用例的数量。

对于每个测试用例,都有一行具有整数的行。nn.

保证2 le 10{18}2≤n≤1018.

输出量

对于每个测试用例,打印一个整数。SS模数nn.

暗示

第一个测试是:S=1\乘以1!=1S=1×1!=1,和11模数22是11.

第二个测试是:S=1\乘以1!+2\乘以2!=5S=1×1!+2×2!=5,和55模数33是22.

样例输入复制

2
2
3

样例输出复制

1
2

题目来源

ACM-ICPC 2018南京赛区网络预赛

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int t;
    cin>>t;
    long long n;
    while(t--)
    {
        cin>>n;
        cout<<n-1<<endl;
    }
}

没错代码就是这样的,我开始正儿八经的按常规方法搞,时间复杂度是o(N)都过不了,然后找规律就过了。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值