Pentium.Labs

System全家桶:https://zhuanlan.zhihu.com/c_1238468913098731520

导航

统计

uva12716 gcd

题意:给出N,1<=b<=a<=N,求满足gcd(a,b)=a xor b的pair (a,b)的个数

 

有个重要的结论:若gcd(a,b)=a xor b=c,那么b=a-c

如果一个个求gcd肯定不行。

令f[i]表示满足条件的pair (a,b)中,a=i的个数

枚举c,令a是c的所有倍数,求出b=a-c。若b=a xor c那么f[a]++

最后求f[]的前缀和S[],那么答案就是S[N](要求a<=N啦~)

 

复制代码
 1 #include <stdio.h>
 2 #include <string.h>
 3 #define LL long long
 4 #define MX 30000005
 5 
 6 int N,T;
 7 LL S[MX],f[MX];
 8 
 9 int main()
10 {
11     memset(f,0,sizeof(f));
12     for (int c=1;c<=MX;c++)
13         for (int a=2*c;a<=MX;a+=c)
14         {
15             int b=a-c;
16             if ((a^b)==c)
17             {
18                 //printf("%d %d %d %d\n",a,b,a^b,c);
19                 f[a]++;
20             }
21         }
22 
23     S[1]=f[1];
24     for (int i=2;i<=MX;i++)
25     {
26         //printf("%d  ",f[i]);
27         S[i]=S[i-1]+f[i];
28     }
29 
30     scanf("%d",&T);
31     for (int times=1;times<=T;times++)
32     {
33         scanf("%d",&N);
34         printf("Case %d: %lld\n",times,S[N]);
35     }
36 
37     return 0;
38 }
View Code
复制代码

 

 

reference:http://blog.csdn.net/u013451221/article/details/38512091

posted on   Pentium.Labs  阅读(223)  评论(0编辑  收藏  举报

编辑推荐:
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ASP.NET Core 模型验证消息的本地化新姿势
阅读排行:
· 从零开始开发一个 MCP Server!
· ThreeJs-16智慧城市项目(重磅以及未来发展ai)
· .NET 原生驾驭 AI 新基建实战系列(一):向量数据库的应用与畅想
· Ai满嘴顺口溜,想考研?浪费我几个小时
· Browser-use 详细介绍&使用文档



Pentium.Lab Since 1998

点击右上角即可分享
微信分享提示