传送门

题意

对于n个女孩,每次分成x人/组,每组比较次数为\(\frac{x(x+1)}{2}\),直到剩余1人

计算$$\sum_{i=l}{r}t{i-l}f(i)$$,其中f(i)代表i个女孩的最少比较数

分析

难度在于如何计算f(i),f(i)每次除的是素数,详情见题解

那么我们对于每一个素数i,直接计算\(f[i]=\frac{x(x+1)}{2}\)

非素数,枚举能被i整除的第一个素数j,\(f[i]=f[i/j]+i*(j-1)/2\)

-end-

trick

代码

#include <bits/stdc++.h>
using namespace std; #define ll long long
#define F(i,a,b) for(int i=a;i<=b;++i)
#define R(i,a,b) for(int i=a;i<b;++i)
#define mem(a,b) memset(a,b,sizeof(a))
//#pragma comment(linker, "/STACK:102400000,102400000")
//inline void read(int &x){x=0; char ch=getchar();while(ch<'0') ch=getchar();while(ch>='0'){x=x*10+ch-48; ch=getchar();}} const int maxn=5e6;
const ll mod = 1e9+7;
int prime[maxn+100];
bool p[maxn+100]; void get_prime()
{
F(i,2,maxn)
{
if(!p[i]) prime[++prime[0]]=i;
for(int j=1;j<=prime[0]&&i*prime[j]<=maxn;++j)
{
p[i*prime[j]]=1;
if(i%prime[j]==0) break;
}
}
} ll t;
int l,r;
ll f[maxn+100],ans;
int main()
{
get_prime();
//F(i,1,prime[0]) f[prime[i]]=(ll)prime[i]*(ll)(prime[i]-1)/2;
scanf("%lld %d %d",&t,&l,&r);
//F(i,1,100) printf("%d\n",p[i]);
f[1]=1;
for(int i=2;i<=maxn;++i)if(p[i])
{
for(int j=1;j<=prime[0];++j) if(i%prime[j]==0) {f[i]=1LL*i*(prime[j]-1)/2+f[i/prime[j]];break;}
}
else {f[i]=1LL*i*(i-1)/2%mod;};
ll cnt=1;
F(i,l,r)
{
ans=(ans+cnt*f[i])%mod;
cnt=cnt*t%mod;
}
printf("%I64d\n",ans);
return 0;
}

最新文章

  1. 转:WebService通用接口
  2. Java 部分注意160530
  3. 转: Div与table的区别
  4. L7,too late
  5. RAC执行root.sh报libcap.so.1: cannot open shared object file
  6. PCI、CPCI、CPCIE 区别、特点
  7. 带着新人看java虚拟机07(多线程篇)
  8. 使用mpvue开发小程序教程(六)
  9. jQuery中 对标签元素操作(2)
  10. windows本地配置php(yii)+nginx+fastcgi
  11. 明天软软onsite
  12. Linux&#160;修改linux的SSH的默认端口
  13. Kali Linux上安装SSH服务
  14. Java设计模式之七大结构型模式(附实例和详解)
  15. 搭建linux远程服务器和传输下载文件
  16. JavaScript入门--慕课网学习笔记
  17. SQL sqlserver order by 1,order by 后面直接加数字,多个字段排序
  18. 解析xml(当节点中有多个子节点)
  19. 虚拟环境中pip install requirments.txt: Cannot fetch index base URL https://pypi.python.org/simple/
  20. Linux利器:WinSCP,Putty,pscp和psftp

热门文章

  1. java学习笔记(四)面向对象
  2. TCP 的那些事儿(下)(转)
  3. js 类继承extends
  4. mybatis 一对一映射
  5. linux 输入子系统(4) intput_dev 接口描述
  6. C语言restrict关键字的使用----可以用来优化代码
  7. HUNNU-10307-最优分解问题
  8. Fibonacci数列(找规律)
  9. swing _JFileChooser文件选择窗口
  10. POJ2253 Frogger —— 最短路变形