Uva12716

题意:

输入整数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 ;
}

最新文章

  1. Launching web on MyEclipse Tomcat 问题
  2. css添加样式的四种方式
  3. apt-get update更新源时,出现“Hash Sum mismatch”问题
  4. 【AngularJS】—— 1 初识AngularJs
  5. make file
  6. jstack命令(Java Stack Trace)
  7. PHP基础语法3
  8. 样式单位之px、em、rem
  9. winform下调用webservice,传参List&lt;string&gt;
  10. 又一个类dapper轮子:VIC.DataAccess
  11. c# Invoke和Begininvoke区别
  12. hdu_1037(水题水疯了。。。史上最水)
  13. windows的服务中的登录身份本地系统账户、本地服务账户和网络服务账户修改
  14. python基础 (初识函数&amp;函数进阶)
  15. iOS 通知推送APNS
  16. java 一些容易忽视的小点-控制语句
  17. Installshield 打包安装程序时写入注册表,及运行bat文件
  18. 第三百七十六节,Django+Xadmin打造上线标准的在线教育平台—创建用户操作app,在models.py文件生成5张表,用户咨询表、课程评论表、用户收藏表、用户消息表、用户学习表
  19. HDU1180:诡异的楼梯(bfs+优先队列)
  20. Java 多线程 破解密码 demo

热门文章

  1. Android: 关于WebView的loadData方法
  2. 把&quot;重试&quot;抽象出来做个工具类吧
  3. linux笔记之解压
  4. JAVA环境配置(Windows10)
  5. 20194651—自动生成四则运算题第一版报告chris
  6. android studio sqlite实际应用中存在的问题
  7. JCL、SLF4J、Log4J、Log4J2、LogBack和JUL之间的关系,你搞清楚了吗?
  8. oracle安装异常汇总
  9. light oj 1014 - Ifter Party分解因子
  10. 3,HDFS原理