Uva12716 素数筛思想的应用
2024-09-06 16:28:43
题意:
输入整数n,1<= n <=3e7,问有多少个整数对(a,b)满足:1 <= b <= a <= n,且gcd(a,b)== a XOR b
解法:
a^b = c 等价于a^c = b 所以枚举a和c,而a和c全部枚举肯定TLE,所以高效算法:通过c是a的约数这个关系来枚举会减小循环,必须要将c放在循环外面,因为c的情况比较少。其实本题就是要求:c=a-b(规律),c=a^b
/*
打表找规律
*/
#include<cstdio>
#include<cmath>
#include<cstring>
using namespace std;
int gcd(int a, int b) { return b == ? a : gcd(b, a%b); }
const int maxn = 3e7 + ;
int ans[maxn]; void generate() {
//类似于筛素数,我们的外层是公约数(素数)
//注意筛素数的时候我们先筛小的,也就是最基本的那个,这样子就可以筛掉所有最基本的那个的倍数
for (int c = ; c <= maxn / ; c++) {
for (int a = c + c; a <= maxn; a += c) {
int b = a - c;
if ((a^b) == c) ans[a]++;
}
}
for (int i = ; i < maxn; i++)ans[i] += ans[i - ];
} int main() {
int T; scanf("%d", &T);
int kase = ;
generate();
while (T--) {
int n; scanf("%lld", &n);
printf("Case %d: %d\n", ++kase, ans[n]);
}
return ;
}
最新文章
- Launching web on MyEclipse Tomcat 问题
- css添加样式的四种方式
- apt-get update更新源时,出现“Hash Sum mismatch”问题
- 【AngularJS】—— 1 初识AngularJs
- make file
- jstack命令(Java Stack Trace)
- PHP基础语法3
- 样式单位之px、em、rem
- winform下调用webservice,传参List<;string>;
- 又一个类dapper轮子:VIC.DataAccess
- c# Invoke和Begininvoke区别
- hdu_1037(水题水疯了。。。史上最水)
- windows的服务中的登录身份本地系统账户、本地服务账户和网络服务账户修改
- python基础 (初识函数&;函数进阶)
- iOS 通知推送APNS
- java 一些容易忽视的小点-控制语句
- Installshield 打包安装程序时写入注册表,及运行bat文件
- 第三百七十六节,Django+Xadmin打造上线标准的在线教育平台—创建用户操作app,在models.py文件生成5张表,用户咨询表、课程评论表、用户收藏表、用户消息表、用户学习表
- HDU1180:诡异的楼梯(bfs+优先队列)
- Java 多线程 破解密码 demo