HDU 6189 Law of Commutation(规律)
2024-09-03 11:22:14
题意:
给定n,a,求区间 [ 1 , 1<<n ] 的数b 满足 的个数
分析:打出暴力程序可以发现当a为奇数的时候结果为一;
当a为偶时 , a^b=2^(k+b)mod 2^n ; 结果肯定为0 ;
那就有b^a mod 2^n=0 ; 则 b也为偶数 ,在分析:
然后分类讨论 b <= n时暴力搞搞
b > n时 就需要满足 b^a % (2^n)等于0了
同理就要满足b^a = 2^a * k^a % (2^n) = 0 那么假设k有x个2 使得(x + 1) * a >= n就好了
#include <stdio.h>
#include <algorithm>
#include <iostream>
using namespace std;
typedef long long ll; ll m;
ll pow_mod(ll x, ll y)
{
ll res = ;
while(y)
{
if(y & ) res = res * x % m;
y >>= ;
x = x * x % m;
}
return res;
} int main()
{
ll n, a;
while(~scanf("%lld%lld", &n, &a))
{
m = ( << n);
if(a & )
{
puts("");
continue;
}
else
{
ll ans = ;
for(int i = ; i <= n; i++)
{
ll o = pow_mod(a, i);
ll u = pow_mod(i, a);
if(o == u) ans++;
} if(a > n) ans += m / - n / ;
else
{
ll p;
if(n % a != ) p = n / a + ;
else p = n / a; p = (1LL << p);
ans += m / p - n / p;
}
printf("%lld\n", ans);
}
}
return ;
}
最新文章
- 【BZOJ1076】[SCOI2008]奖励关 状压DP+期望
- (1)编写一个接口:InterfaceA,只含有一个方法int method(int n); (2)编写一个类:ClassA来实现接口InterfaceA,实现int method(int n)接口方 法时,要求计算1到n的和; (3)编写另一个类:ClassB来实现接口InterfaceA,实现int method(int n)接口 方法时,要求计算n的阶乘(n!); (4)编写测试类E测试
- Linux下修改网卡IP、DNS和网关
- VMWare中安装CentOS6.6不能上网的解决办法
- hadoop 磁盘限额配置
- sql or 与and同时有时要注意
- 电源库(Sources)
- Zookeeper管理多个HBase集群
- DBUtils——handler
- (数字三角形)POJ1163 The Triangle
- 2018-2019-1 20189203《Linux内核原理与分析》第四周作业
- JOptionPane类提示框常用方法总结
- hdu5489 树状数组+dp
- pyqt 实现的俄罗斯方块
- 博客搬家到 http://leijun00.github.io
- 红黑树,TreeMap,插入操作
- Spark源码分析 &ndash; Checkpoint
- iOS开发:MKMapView地图内存持续增加的释放解决办法
- egg
- 机器学习算法( 二、K - 近邻算法)