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*...\)取到最大值 思路 大胆猜结论. 首先拆分的形式中肯 ...
随机推荐
- 例题 2-1 aabb 2-2 3n+1问题
例题2-1 aabb 输出全部形如aabb的四位全然平方数(即前两位数字相等,后两位数字也相等) #include <stdio.h> #include <stdlib.h> ...
- 学习Mockito - Mockito对Annotation的支持
学习Mockito - Mockito对Annotation的支持 博客分类: test junit工作 Mockito支持对变量进行注解,例如将mock对象设为测试类的属性,然后通过注解的方式@M ...
- 关于联想超极本出现蓝屏Default Boot Device Missing or Boot Failed的解决办法
联想笔记本出现以下症状无法开机时: 解决方案:恢复BIOS默认设置,把硬盘设置为第一启动项. 若成功检测到硬盘并有EFI引导程序,那么恭喜你这就完事了,重启后就可以正常开机了. 但是,若在UEFI模式 ...
- 【C语言】编写函数,将一个数的指定位置置0或置1
//编写函数,将一个数的指定位置置0或置1 #include <stdio.h> unsigned int set_bit(unsigned int num, int pos, int f ...
- jsp页面自动换行
其实只要在表格控制中添加一句 <div style="word-break:break-all">就搞定了.</div>其中可能对英文换行可能会分开一个单词 ...
- 【BZOJ 2351】 Matrix
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=2351 [算法] 哈希 [代码] #include<bits/stdc++.h& ...
- html转义字符换行以及回车等的使用
欢迎加入前端交流群交流知识&&获取视频资料:749539640 html换行回车转义字符 换行Line feed 回车Carriage Return html中换行转义字符 的使 ...
- MySQL实现表之间的字段更新
新功能写好之后,需要把以前表数据更新一下,字段数据从以前的表中获取,只更新两个字段 UPDATE TABLE1,TABLE2 SET TABLE1.COLUMN1 = TABLE2.COLUMN1 , ...
- codeforces 708ALetter Cyclic Shift
2019-05-18 09:51:19 加油,加油,fightting !!! https://www.cnblogs.com/ECJTUACM-873284962/p/6375011.html 全为 ...
- Kafka .NET操作
Kafaka .NET连接 Kafka目前主流在用的.NET客户端有两个:一个是kafka-net,另外一个是Confluent.Kafka,这里给出使用示例: kafka-net示例: public ...