题意: 问 gcd(i,j) = i ^ j  的对数(j <=i <= N ) N的范围为30000000,有10000组例子

思路:GCD(a,b) = a^b = c

GCD(a/c,b/c) = 1 (1)

(a-b) <= c (2)

(a/c-b/c) <=1 (3)

(1)(3) => a/c-b/c = 1=> a-b=c

#include <iostream>
#include <cstdio>
#include <cstring>
#include <vector>
#include <string>
#include <algorithm>
#include <queue>
#include <set>
#include <map>
#include <cmath>
using namespace std;
const int maxn = 30000000+10;
typedef long long LL;
int N;
int ret[maxn]; void init() {
for(int i = 3; i < maxn; i+=2) ret[i] = 1;
for(int i = 2; i < maxn/2; i++) {
for(int j = i+i; j < maxn; j += i) {
int k = j-i;
if( (k^j) == i){
ret[j]++;
}
}
}
for(int i = 1; i < maxn; i++) ret[i] += ret[i-1];
}
int main(){
int ncase,T=1;
init();
cin >> ncase;
while(ncase--) {
scanf("%d",&N);
printf("Case %d: %d\n",T++,ret[N]);
}
return 0;
}

最新文章

  1. Ubuntu不显示壁纸,桌面右键无反应解决
  2. gulp入门教程(详细注解)
  3. winston日志管理3
  4. ARM Mysql c 通信
  5. JS中的DOM与BOM
  6. Java API —— 反射
  7. [LeetCode OJ] Sort Colors
  8. linux内核学习-建议路线
  9. Highcharts中文网
  10. loj1236(数学)
  11. lunix存取windows共享文件夹
  12. jQuery获取当前对象标签名称
  13. Chinese Rings hdu 2842 矩阵快速幂
  14. 在 root 下执行 Oracle 程序时找不到 libclntsh.so.11.1 错误的解决办法。
  15. ASP.NET Core实现 随处可见的基本身份认证
  16. USB虚拟串口通信
  17. 20165234 《Java程序设计》第八周学习总结
  18. linux 命令格式
  19. 纯js无缝滚动
  20. 苹果手机 disabled 的背景颜色没有

热门文章

  1. spring Batch实现数据库大数据量读写
  2. ubuntu14.04无法安装Curl
  3. 剑指offer面试题14(Java版):调整数组顺序使奇数位于偶数的前面
  4. [总结]FFMPEG视音频编解码零基础学习方法【转】
  5. 引入jquery.js和jquery-1.10.2.min.js 发生冲突解决办法
  6. Huatuo&#39;s Medicine
  7. Java标识符规范
  8. 教你用3ds max制作多边形小狗建模
  9. ZBrush中遮罩的概念及使用
  10. 使用C++部署Keras或TensorFlow模型