hdu 5175 Misaki's Kiss again (抑或运算+公式变形)
题意:找出1-n之间所有的m使得gcd(n,m) = n^m。
分析:令n^m = k,可以推出n^k = m,m^k = n。则由gcd(n,m) = n^m = k
可以推出 gcd(n,n^k) = k且k是n的约数。
故找出n的所有约数,判断是否满足gcd(n,n^k)=k即可。
n^k =0 要舍去,因为此时k = n,不满足gcd(n,n) = (n^n)。
而且抑或运算得到的数可能变大,如1^2 = 3,故要判断(n^k)<=n.
抑或运算要打括号。
发现抑或好神奇~
通过打表发现满足条件的数很少,而且都靠近n。
STL中set可以自动排序。
下面不是按照上面的思路写的~是打表琢磨出的
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cstdlib>
#include<cmath>
#include<vector>
#include<queue>
#include<map>
#include<set>using namespace std;typedef long long ll;
set<ll> v;
set<ll>::iterator it;ll gcd(ll a,ll b)
{return b==0?a:gcd(b,a%b);
}int main()
{ll n,g,h1,h2;int cas=1;while(~scanf("%I64d",&n)){v.clear();for(ll i=1;i*i<=n;i++){if(n%i==0){g = n/i;h1 = (g-1)*i;h2 = (i-1)*g;if(h1!=0 && gcd(n,h1)==(n^h1))v.insert(h1);if(h2!=0 && gcd(n,h2)==(n^h2))v.insert(h2);}}int m = v.size(),c;printf("Case #%d:\n",cas++);printf("%d\n",m);if(m){for(it=v.begin(),c=1;it!=v.end();it++,c++){printf("%I64d",*it);if(c!=m) printf(" ");}}printf("\n");}return 0;
}
hdu 5175 Misaki's Kiss again (抑或运算+公式变形)相关推荐
- 【HDU 5765】Bonds(进制运算妙用)
[HDU 5765]Bonds(进制运算妙用) Bonds Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K ...
- Java执行字符串中的运算公式
在实现执行字符串中的运算公式时,采用了如下所示的代码: public static String StringfinalResult (String original) { try { String ...
- asp从后台调出的公式怎么参与运算_吴望一《流体力学》第一章中微分运算公式的初等证明...
本文中,矢量场均用箭头指示,例如 为矢量场, 为标量场. 本文只涉及吴望一<流体力学>第一章中所列的17条微分运算公式,不含积分运算公式. 先把所有公式一并列出,以便查找: 1. 2. 3 ...
- excel时间双击后公式才计算机,(excel为什么需要双击每个单元格以后才能运算公式?)excel表格双击后数据...
excel 单击表格无法输入数据双击后才可以输入数据为什么?请教高手? 按F2就解决啦 在给excel单元格设置格式后,为什么必须双击才会生效?如何才能让设置直接生效? Excel默认就是这样的,若需 ...
- js解析数学运算公式
js解析数学运算公式 已上传到npm,NPM包地址:https://www.npmjs.com/package/exec-mathexpress 示例demo //运行democonst execMa ...
- 用指数形母函数证明一个基本的指数运算公式
用指数形母函数证明一个基本的指数运算公式 证明e^x*e^y=e^(x+y): 在证明这个公式之前先证明一个较弱的公式: a(n)=1+a(1)/1!*x+a(2)/2!*x^2+a(3)/3!*x^ ...
- Python中的方根运算及对数运算公式
Python中的方根运算及对数运算公式 在Python中,我们可以使用math模块来进行方根及对数运算.下面是一些常用的代码示例: 计算平方根 使用math.sqrt(x)函数可以计算一个数的平方根. ...
- lg相乘公式,lg指数函数运算法则,指数函数运算公式8个
内容导航: Q1:对数函数的运算公式. 1.a^log(a)(b)=b 2.log(a)(a)=1 3.log(a)(MN)=log(a)(M)+log(a)(N); 4.log(a)(M÷N)=lo ...
- c语言如何自定义运算公式,怎样用C语言编写数学公式 如何用C语言输入数学公式...
导航:网站首页 > 怎样用C语言编写数学公式 如何用C语言输入数学公式 怎样用C语言编写数学公式 如何用C语言输入数学公式 相关问题: 匿名网友: 1.C语言有现场的常用数学函数,所在函数库为m ...
最新文章
- D - Fliptile POJ - 3279(翻转问题)
- Warning: React.createElement: type is invalid -- expected a string (for built-in components) or a cl
- Linux基础命令使用
- mysql分区有好处吗_mysql 分区有实用价值吗?
- 给大学生分享一下我的编程人生
- 进程调度 操作系统第二章知识点归纳总结
- C# html转mht
- SQL Server 索引基础知识(10)----Join 时的三种算法简介
- 利用swoole coroutine协程实现redis异步操作
- pip;python包管理工具
- 第四章——变换域处理方法
- mysql重复执行命令_mysql----------mysql的一些常用命令
- 推荐:class文件反编译工具Java Decomplier
- 计算机数字雨教程视频,股票配资火爆cmd什么意思(cmd命令数字雨)
- 智能家居内网服务器,手把手教你搭建自己的智能家居IOT系统
- C++中string类
- oracle lob类型和mysql text_OracleLob类型存储浅析
- 基于STM32和ESP8266的天气预报系统
- 也谈阻塞、非阻塞、同步、异步
- 关于vs新建项目时只有空白项