422D
来源:互联网 发布:手机图像识别软件 编辑:程序博客网 时间:2024/05/22 03:33
题意:f(i)表示有i个女孩比赛,若不分组,则应当比 次。但可以将他们分为x个组,每组i/x个人,每组分别进行比赛决出一个女孩,再将各个组决出的女孩进行比赛。给出t,l,r,求 t0·f(l) + t1·f(l + 1) + ... + tr - l·f(r).
解答:如果是素数,则无法分组,否则分为i/i的最小质因子组。i的最小质因子可通过筛素数的方法得出。
#include<iostream>#include<cstdio>#include<cstring>#include<cmath>using namespace std;const int MAXN = 5000000 + 100;long long int p[MAXN];int prime[MAXN];const long long int MOD = 1e9 + 7;void init(){ memset(prime,0,sizeof(prime)); int m = sqrt(MAXN + 10); for(int i = 2;i <= m;i++){ if(!prime[i]){ for(int j = i*i;j <= MAXN;j += i){ if(!prime[j]) prime[j] = i; } } } for(long long int i = 2;i <= MAXN;i++) { if(!prime[i]) p[i] = ((i*(i-1))/2)%MOD; else p[i] = (p[i/prime[i]]+(i/prime[i])*p[prime[i]])%MOD; }}int main(){ long long int t,l,r; init(); while(cin >> t >> l >> r) { long long int tmp = 1; long long int ans = 0; for(int i = l;i <= r;i++) { ans = ((tmp * p[i])%MOD+ans)%MOD; tmp = (tmp * t)%MOD; } cout << ans%MOD << endl; } return 0;}
阅读全文
0 0
- 422D
- d
- d
- d
- d
- d
- D
- d
- d
- d
- d
- d
- %d
- d
- d
- d
- D
- d
- recycleView的使用以及PullableRecyclerView实现了上拉加载下拉刷新的效果
- Comparator源码解析
- Qt5.7&VS2015环境搭建
- 小程序图片上传,后台使用Servlet上传业务逻辑
- C++中const修饰函数形参,函数,函数返回值
- 422D
- 网站终于备案完成
- img下几像素空白产生原因
- 最小生成树——普利姆算法(prim)
- pt-online-schema-change 过程详解
- 170722考试
- PHP优化加速之Opcache使用总结
- VS打开白屏
- dojo/_base/declare模块