HDU5976 Detachment
/*
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的更多相关文章
- hdu 5976 Detachment
Detachment Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total ...
- HDU 5976 Detachment 打表找规律
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5976 Detachment Time Limit: 4000/2000 MS (Java/Other ...
- hdu5976贪心乘法逆元
hdu 5976 Detachment题目连接 题意: 给定一个自然数x,让你给出一种拆分方式n=a1+a2+...(ai≠aj),使得每个小部分的乘积s=a1*a2*...最大 解题思路: 我们要乘 ...
- HDU 5976 Detachment(拆分)
HDU 5976 Detachment(拆分) 00 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Problem D ...
- 2016 ACM/ICPC亚洲区大连站 F - Detachment 【维护前缀积、前缀和、二分搜索优化】
F - Detachment In a highly developed alien society, the habitats are almost infinite dimensional spa ...
- HDU 5976 Detachment 【贪心】 (2016ACM/ICPC亚洲区大连站)
Detachment Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total ...
- 2016 ICPC大连站---F题 Detachment
题意:输入一个x,将x拆分成一些小的数(这些数不能相同,即x=a1+a2+...... ai!=aj when i!=j),然后这些数相乘得到一个成积(s=a1*a2*......),求最大的乘积 ...
- 【HDOJ5976】Detachment(贪心)
题意:给定n,要求构造若干个各不相同且和为n的正整数使得它们的乘积最大 T<=1e6,1<=n<=1e9 思路:From https://blog.csdn.net/qq_34374 ...
- hdu 5976 Detachment 脑洞题 猜结论
题目链接 题意 将\(x\)拆成\(a_1+a_2+...+\)的形式,且\(a_1\lt a_2\lt...\),使得\(a_1*a_2*...\)取到最大值 思路 大胆猜结论. 首先拆分的形式中肯 ...
随机推荐
- APP漏洞自动化扫描专业评测报告(下篇)
上篇.中篇回顾:通过收费情况.样本测试后的扫描时间.漏洞项对比以及扫描能力这几个方面对阿里聚安全[1].360App漏洞扫描[2].腾讯金刚审计系统[3].百度移动云测试中心[4]以及AppRisk ...
- er图简单回顾
实体对象:矩形 属性:椭圆 关系:菱形 一对一,一对多,多对一,多对多
- luogu3690 【模板】 Link Cut Tree(动态树)
题目大意 给定n个点以及每个点的权值,要你处理接下来的m个操作.操作有4种.操作从0到3编号.点从1到n编号.0.询问从x到y的路径上的点的权值的xor和.保证x到y是联通的.1.代表连接x到y,若x ...
- 0x63树的直径与最近公共祖先
凉 bzoj1999 先把树的直径求出来,从左往右枚举,对于当前位置i,找到满足限制并且最远的点j,当前位置最大值就是max(i~j区间内除直径外的子树路径长度最大值,1~i的长度,j~n的长度) 然 ...
- ROS单线多拨pppoe
#设置内网IP地址 / ip add add interface=ether1 address=192.168.0.254/255.255.255.0 #设置共享上网 / ip firewall na ...
- openssl https证书
今天摸索了下 HTTPS 的证书生成,以及它在 Nginx 上的部署.由于博客托管在 github 上,没办法部署证书,先记录下,后续有需要方便快捷操作.本文的阐述不一定完善,但是可以让一个初学者了解 ...
- 单元测试之Mock
为什么需要Mock. 真实对象具有不确定的行为.所以会产生不可预测的结果. 真实对象很难被创建. 真实对象的某些行为很难被触发(如网络错误). 真实对象令程序的运行速度很慢. 真实对象有(或者是)用户 ...
- javascript中异常处理案例
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 体验:Anko + Kotlin
● 依赖:compile 'org.jetbrains.anko:anko:0.10.0' ● 界面: import android.view.View import org.jetbrains.an ...
- 【Oracle】恢复丢失的临时表空间文件
Oracle 11g以后,临时表空间文件是可以在重启数据库以后自动生成的(当然也可以在相同目录再建一个临时表空间文件),模拟实验如下: 1)删除临时表空间数据文件 SYS@ENMOEDU> se ...