【BZOJ2401】陶陶的难题I

题意:求,n<=1000000,T<=100000

题解:直接做是n*sqrt(n)的,显然会TLE,不过这题a和b都是循环到n,那么就可以进行如下的神奇变换:

$\sum\limits_{i=1}^n\sum\limits_{j=1}^nlcm(i,j)=2*\sum\limits_{i=1}^n\sum\limits_{j=1}^ilcm(i,j)-\sum\limits_{i=1}^ni$

是不是很神奇?然后继续推即可。

设$f(i)=\sum\limits_{d|i}\varphi({i\over d}){i\over d}$,我们只需要现行筛出f即可。

我们依旧只考虑i是质数的情况,当i=p时,$f(i)=p^2-p+1$,当i=p^2时,$f(i)=p^4-p^3+p^2-p+1$,以此类推。

所以我们维护一下x的最小质因子出现的次数,然后线性筛即可。

还有,因为出题人丧病,此题爆long long。

#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
typedef long long ll;
const int N=1000000;
const ll P=1000000000000ll;
ll a,b;
int n,num,T;
int np[N+10],pri[N/10],phi[N+10];
ll g[N+10],h[N+10];
struct lll
{
ll a,b;
lll() {a=b=0;}
lll(ll c) {a=c/P,b=c%P;}
lll(ll x,ll y){a=x,b=y;}
lll operator + (const lll &x) const
{
lll y(a+x.a,b+x.b);
y.a+=y.b/P,y.b%=P;
return y;
}
lll operator - (const lll &x) const
{
lll y(a-x.a,b-x.b);
if(y.b<0) y.a--,y.b+=P;
return y;
}
void print()
{
if(a) printf("%lld%012lld\n",a,b);
else printf("%lld\n",b);
}
}f[N+10];
inline ll rd()
{
ll ret=0,f=1; char gc=getchar();
while(gc<'0'||gc>'9') {if(gc=='-')f=-f; gc=getchar();}
while(gc>='0'&&gc<='9') ret=ret*10+gc-'0',gc=getchar();
return ret*f;
}
int main()
{
int i,j,p;
g[1]=1;
for(i=2;i<=N;i++)
{
if(!np[i]) pri[++num]=i,g[i]=h[i]=(ll)i*i-i+1;
for(j=1;j<=num&&i*pri[j]<=N;j++)
{
p=pri[j],np[i*p]=1;
if(i%p==0)
{
h[i*p]=h[i]*p*p-p+1;
g[i*p]=g[i]/h[i]*h[i*p];
break;
}
h[i*p]=(ll)p*p-p+1;
g[i*p]=g[i]*h[i*p];
}
}
for(i=1;i<=N;i++) f[i]=lll(g[i]*i)+f[i-1];
T=rd();
while(T--)
{
ll n=rd();
lll ans=f[n];
ans.print();
}
return 0;
}

最新文章

  1. MS-MPI 的使用
  2. msyql 数据库恢复相关
  3. [工具类]获取url中参数列表
  4. SSHPASS支持从命令行输入密码
  5. 常用的一些webshell木马官方后门
  6. CSS For Bar Graphs(maybe old)
  7. 【你吐吧c#每日学习】11.10 C# Data Type conversion
  8. js 倒计时(转)
  9. NVelocity 实现简单的留言板
  10. Linux LVM 扩展磁盘分区
  11. cocos2d-x游戏开发系列教程-坦克大战游戏之子弹的碰撞检测处理
  12. 内存泄露检測及cvClone造成的泄露
  13. C# .NET 0配置使用Wcf(半成品)
  14. c/c++ 拷贝控制 构造函数的问题
  15. unsigned 变量名:n
  16. c# JSON格式转对象
  17. openlayers空间点查询之GetFeatureInfo
  18. python-模块的导入import
  19. Android:异步处理之Handler+Thread的应用(一)
  20. TQ2440开发板存储器

热门文章

  1. ylbtech-KeFuYunWei(服务运维考核系统)-数据库设计
  2. barrier and Fence
  3. log4j教程 2、安装
  4. EF使用延迟加载的本质原因
  5. 三分钟教你学Git(十三) - 二分查找
  6. Scrapy的介绍和用法
  7. Nginx限制连接和请求
  8. Linux——学习环境搭建
  9. JavaScript变量提升 面试题
  10. 乐鑫esp8266的 基于Nonos移植红外线1883,实现遥控器控制