/*
HDU5976 Detachment
http://acm.hdu.edu.cn/showproblem.php?pid=5976
数论 等差数列
*
*
*/
#include <cstdio>
#include <algorithm>
#include <vector>
using namespace std;
const int mod=;
const int Nmax=;
vector<long long> v;
long long f[Nmax];
long long g[Nmax];
long long qpow(long long base,int n)
{
long long ans=1LL;
base=base%mod;
while(n>)
{
if(n&)
ans=ans*base%mod;
base=(base*base)%mod;
n>>=;
}
while(ans<)
ans+=mod;
return ans;
} int main()
{
//freopen("3.in","r",stdin);
int t;
scanf("%d",&t);
long long x;
f[]=1LL; f[]=0LL;
f[]=2LL;
g[]=1LL;
g[]=2LL;
v.push_back(f[]);
v.push_back(f[]);
for(int i=;i<Nmax;i++)
{
g[i]=1LL*i*g[i-]%mod;
f[i]=1LL*i+f[i-];
v.push_back(f[i]);
}
//printf("%lld\n",f[Nmax-1]);
while(t--)
{
long long ans=1LL;
scanf("%lld",&x);
int j=;
int k=;
for(int i=;i<Nmax;i++)
{
if(x>=f[i] && x<f[i+])
{
j=i;
break;
}
}
//printf("bj:%d\n",j);
j=lower_bound(v.begin(),v.end(),x)-v.begin();
while(!(x>=f[j]&& x<f[j+]))
j++;
//printf("j:%d\n",j);
long long remain=x-f[j];
if(remain)
{
if(remain==j)
k=;
else
k=j+-remain;
//printf("j:%d k:%d\n",j,k);
ans=g[j];
ans=ans*qpow(1LL*k, mod- )%mod;
ans=ans*(k+remain)%mod;
}
else
{
ans=g[j];
}
while(ans<)
ans+=mod;
printf("%lld\n",ans);
}
return ;
}

HDU5976 Detachment的更多相关文章

  1. hdu 5976 Detachment

    Detachment Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total ...

  2. HDU 5976 Detachment 打表找规律

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5976 Detachment Time Limit: 4000/2000 MS (Java/Other ...

  3. hdu5976贪心乘法逆元

    hdu 5976 Detachment题目连接 题意: 给定一个自然数x,让你给出一种拆分方式n=a1+a2+...(ai≠aj),使得每个小部分的乘积s=a1*a2*...最大 解题思路: 我们要乘 ...

  4. HDU 5976 Detachment(拆分)

    HDU 5976 Detachment(拆分) 00 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)   Problem D ...

  5. 2016 ACM/ICPC亚洲区大连站 F - Detachment 【维护前缀积、前缀和、二分搜索优化】

    F - Detachment In a highly developed alien society, the habitats are almost infinite dimensional spa ...

  6. HDU 5976 Detachment 【贪心】 (2016ACM/ICPC亚洲区大连站)

    Detachment Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total ...

  7. 2016 ICPC大连站---F题 Detachment

    题意:输入一个x,将x拆分成一些小的数(这些数不能相同,即x=a1+a2+......   ai!=aj when i!=j),然后这些数相乘得到一个成积(s=a1*a2*......),求最大的乘积 ...

  8. 【HDOJ5976】Detachment(贪心)

    题意:给定n,要求构造若干个各不相同且和为n的正整数使得它们的乘积最大 T<=1e6,1<=n<=1e9 思路:From https://blog.csdn.net/qq_34374 ...

  9. hdu 5976 Detachment 脑洞题 猜结论

    题目链接 题意 将\(x\)拆成\(a_1+a_2+...+\)的形式,且\(a_1\lt a_2\lt...\),使得\(a_1*a_2*...\)取到最大值 思路 大胆猜结论. 首先拆分的形式中肯 ...

随机推荐

  1. win7_64

    转到YLMF DOS工具,输入ghost然后回车 enter后 选择options进入

  2. Linux 查看负载

    top  iostat -x 1 10 free uptime cat /proc/cpuinfo cat /proc/meminfo src lsof 1,查看磁盘 df -h 2,查看内存大小 f ...

  3. TensorRT加速 ——NVIDIA终端AI芯片加速用,可以直接利用caffe或TensorFlow生成的模型来predict(inference)

    官网:https://developer.nvidia.com/tensorrt 作用:NVIDIA TensorRT™ is a high-performance deep learning inf ...

  4. Max Sum--hdoj 1003 dp

    Max Sum Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Su ...

  5. redis动态添加内存,动态配置,无需重启

    在redis的使用过程中,有时候需要急需修改redis的配置,比如在业务运行的情况下,内存不够怎么办,这时要么赶紧删除无用的内存,要么扩展内存.如果有无用的内容可删除那么所有问题都已经解决.如果内容都 ...

  6. 微信小程序蓝牙连接小票打印机

    1.连接蓝牙 (第一次发表博客)   第一步打开蓝牙并搜索附近打印机设备// startSearch: function() { var that = this wx.openBluetoothAda ...

  7. shp系列(五)——利用C++进行shp文件的写(创建)

    之前介绍了shp文件.dbf文件和shx文件的的读取,接下来将分别介绍它们的创建过程.一般来说,读和写的一一对应的,写出的文件就是为了保存数据供以后读取的.写的文件要符合shapefile的标准.之前 ...

  8. JDBC数据库中表更新

    import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sq ...

  9. POJ 3613 floyd+矩阵快速幂

    题意: 求s到e恰好经过n边的最短路 思路: 这题已经被我放了好长时间了. 原来是不会矩阵乘法,快速幂什么的也一知半解 现在终于稍微明白了点了 其实就是把矩阵乘法稍微改改 改成能够满足结合律的矩阵&q ...

  10. B - Calculating Function

    Problem description For a positive integer n let's define a function f: f(n) =  - 1 + 2 - 3 + .. + ( ...