2009 Putnam Competition B3

题目大意:

\(T(t\le10^5)\)次询问,每次询问\(n(n\le2\times10^6)\)以内的正整数构成的集合,有多少满足若\(a\in S,b\in S\)且\(2|(a+b)\),则\(\frac{a+b}2\in S\)。

思路:

OEIS A124197

显然,取值区间\([1,n]\)和\([2,n+1]\)答案是相等的。

用\(f(n)\)表示\(n\)以内的合法集合的答案,考虑二阶差分\((f(n+1)-f(n))-(f(n)-f(n-1))\)的含义,就是强制包含\(1\)和\(n+1\)时合法集合数。

线性筛出每个数奇约数的个数\(g_i\),作二维前缀和\(h_i\),然后答案就是\(h_{n-1}+n+1\)。

源代码:

#include<cstdio>
#include<cctype>
#include<algorithm>
inline int getint() {
register char ch;
while(!isdigit(ch=getchar()));
register int x=ch^'0';
while(isdigit(ch=getchar())) x=(((x<<2)+x)<<1)+(ch^'0');
return x;
}
typedef long long int64;
const int N=2e6+1;
bool vis[N];
int64 f[N];
int p[N],q[N];
inline void sieve() {
std::fill(&f[1],&f[N],1);
for(register int i=2;i<N;i++) {
if(!vis[i]) {
q[i]=1;
f[i]=2;
p[++p[0]]=i;
}
for(register int j=1;j<=p[0]&&p[j]*i<N;j++) {
vis[p[j]*i]=true;
if(i%p[j]==0) {
q[p[j]*i]=q[i]+1;
f[p[j]*i]=f[i];
f[p[j]*i]/=q[i]+1;
f[p[j]*i]*=q[i]+2;
break;
} else {
q[p[j]*i]=1;
f[p[j]*i]=f[i]*2;
}
}
}
}
int main() {
sieve();
for(register int i=1;i<N;i++) {
if(i%2==0) f[i]=f[i>>1];
}
for(register int i=1;i<N;i++) f[i]+=f[i-1];
for(register int i=1;i<N;i++) f[i]+=f[i-1];
for(register int T=getint();T;T--) {
const int n=getint();
printf("%lld\n",f[n-1]+n+1);
}
return 0;
}

最新文章

  1. 9 HTML&amp;JS等前端知识系列之Ajax post请求带有token向Django请求
  2. 表单select相关
  3. C#中的String.Format方法(转)
  4. 0c-33-@class,循环retain
  5. kav卡巴斯基2014 优化设置
  6. 软件版本中的Alpha,Beta,RC,Trial是什么意思?
  7. wireshark filter manualpage
  8. 双向bfs-八数码问题
  9. 使用jitpack来获取github上的开源项目
  10. Android P Beta发布!最新版本抢先体验!
  11. 用OleDb导入Excel时提示驱动错误问题解决办法
  12. Python基础(中)
  13. hdu 2065 &quot;红色病毒&quot;问题(快速幂求模)
  14. DECLARE_MESSAGE_MAP 宏
  15. oracle EBS grant 您不具有执行当前操作的足够权限。请与您的系统管理员联系。
  16. 使用grep进行文本查找
  17. hdu5139
  18. bat批处理以当前时间创建文本文件
  19. Delegate(代理)异常:该委托必须有一个目标
  20. 基础篇:6.2)形位公差-符号 Symbol

热门文章

  1. Centos7上搭建ftp服务器
  2. python练习册0005
  3. SQL查询数据并插入新表
  4. java编译通过,为什么运行却提示找不到或无法加载主类?
  5. 【C++ Primer | 07】常用算法
  6. SQL Server 对字符进行排序(数字类的字符)
  7. 修改Tomcat默认连接数
  8. vue 踩坑记录
  9. python基础——字符串、编码、格式化
  10. flink的集群的HA高可用