UVa 12716 GCD XOR (简单证明)
2024-08-31 11:07:22
题意: 问 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;
}
最新文章
- Ubuntu不显示壁纸,桌面右键无反应解决
- gulp入门教程(详细注解)
- winston日志管理3
- ARM Mysql c 通信
- JS中的DOM与BOM
- Java API —— 反射
- [LeetCode OJ] Sort Colors
- linux内核学习-建议路线
- Highcharts中文网
- loj1236(数学)
- lunix存取windows共享文件夹
- jQuery获取当前对象标签名称
- Chinese Rings hdu 2842 矩阵快速幂
- 在 root 下执行 Oracle 程序时找不到 libclntsh.so.11.1 错误的解决办法。
- ASP.NET Core实现 随处可见的基本身份认证
- USB虚拟串口通信
- 20165234 《Java程序设计》第八周学习总结
- linux 命令格式
- 纯js无缝滚动
- 苹果手机 disabled 的背景颜色没有
热门文章
- spring Batch实现数据库大数据量读写
- ubuntu14.04无法安装Curl
- 剑指offer面试题14(Java版):调整数组顺序使奇数位于偶数的前面
- [总结]FFMPEG视音频编解码零基础学习方法【转】
- 引入jquery.js和jquery-1.10.2.min.js 发生冲突解决办法
- Huatuo&#39;s Medicine
- Java标识符规范
- 教你用3ds max制作多边形小狗建模
- ZBrush中遮罩的概念及使用
- 使用C++部署Keras或TensorFlow模型