【P1379】天才的约数和
来自GDOI2007,原题已不可考……
又自己做出来了好开心,找特殊性是个关键的切入点
原题:
这天周航遇到了靳泽旭。
周航:“我是天才!”
靳泽旭:“你为什么是天才?”
周航:“你随便告诉我一个数字,我立即可以算出它所有约数之和,以及所有约数的倒数和!”
靳泽旭:“换过来,我告诉你一个数的所有约数(包括1和该数本身)的和以及约数的倒数之和,你是天才你应该立即能推出这个数是什么!”
周航被难倒了!
现在,这个难倒了天才的题目就交到你手上了。
很像数论对吧
反正我没用数论知识
手玩小数据,玩到8的时候就可以发现一个很明显的规律:(不会搞表达式只能鼠绘一。一
把分母搞成一样的(通分)以后,分子就是所有约数和,分母是这个数,题目中也给出了约数和
分子上的约数和可能会和分母约掉,那么把分子和分母还原成约分之前的样子(分子分母同时*给出的约数和/分子)
如果给出的约数和%分子!=0,根据显然法可得,显然,无解
然后还需要验证一下,如果还原后的分母的约数和等于给出的约数和,还原后的分母就是答案
可以打表证明对于任意一组数据要么无解要么一组解,数学证明我不会(逃
在赛场上真不会也可以赌一下
然后搞一搞就行了,代码很好写
找特殊性是切入点,打表大法好
代码:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
long long read(){long long z=,mark=; char ch=getchar();
while(ch<''||ch>''){if(ch=='-')mark=-; ch=getchar();}
while(ch>=''&&ch<=''){z=(z<<)+(z<<)+ch-''; ch=getchar();}
return z*mark;
}
long long a,b,c;
long long jie(long long x){
int _q=int(sqrt(x*1.0));
long long bowl=;
for(int i=;i<=_q;i++)if(!(x%i)) bowl+=i+x/i;
if(_q*_q==x) bowl-=_q;
return bowl;
}
int main(){//freopen("ddd.in","r",stdin);
for(;;){//徐王大法好
a=read(),b=read(),c=read();
if(!a && !b && !c) break;
if(a%b){ printf("0\n"); continue;}
c*=a/b;
if(a!=jie(c)) printf("0\n");
else printf("1 %lld\n",c);
}
return ;
}
【P1379】天才的约数和的更多相关文章
- JZYZOJ1379天才的约数和 数论 约数和
http://172.20.6.3/Problem_Show.asp?id=1379 易得n=a*b2/b1: 需要注意算出n之后要判断n的约数和是否等于a,这里需要用约数和定理递归,递归前求一下 ...
- BZOJ 1968: [Ahoi2005]COMMON 约数研究
1968: [Ahoi2005]COMMON 约数研究 Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 2032 Solved: 1537[Submit] ...
- 【BZOJ】3994: [SDOI2015]约数个数和
题意: \(T(1 \le T \le 50000)\)次询问,每次给出\(n, m(1 \le n, m \le 50000)\),求\(\sum_{i=1}^{n} \sum_{j=1}^{m} ...
- [No000050]练习一万小时便能成为天才
练习一万小时便能成为天才 世界上顶尖的记忆高手都是训练出来的! 加拿大畅销书作家麦尔坎·葛拉威尔在<异数>一书中指出:"人们眼中的天才之所以卓越非凡,并非天资超人一等,而是付出了 ...
- codevs 2606 约数和问题
题目描述 Description Smart最近沉迷于对约数的研究中. 对于一个数X,函数f(X)表示X所有约数的和.例如:f(6)=1+2+3+6=12.对于一个X,Smart可以很快的算出f(X) ...
- hdu5175 gcd 求约数
题意:求满足条件GCD(N,M) = N XOR M的M的个数 sol:和uva那题挺像的.若gcd(a,b)=a xor b=c,则b=a-c 暴力枚举N的所有约数K,令M=NxorK,再判断gcd ...
- hdu1492(约数个数定理)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1492 这里先讲一下约数个数定理: 对于正整数x,将其质因分解为 x = pow(p1, a) * po ...
- 【vijos】P1514天才的记忆
描述 从前有个人名叫W and N and B,他有着天才般的记忆力,他珍藏了许多许多的宝藏.在他离世之后留给后人一个难题(专门考验记忆力的啊!),如果谁能轻松回答出这个问题,便可以继承他的宝藏.题目 ...
- POJ 2480 (约数+欧拉函数)
题目链接: http://poj.org/problem?id=2480 题目大意:求Σgcd(i,n). 解题思路: 如果i与n互质,gcd(i,n)=1,且总和=欧拉函数phi(n). 如果i与n ...
随机推荐
- leetcode 日记 162. Find Peak Element java python
根据题目可知,输入为:一个相邻元素不相等的数列,输出为:其中一个(上)峰值的序号.并且要求时间复杂度为logn 分析:由于题目要求时间复杂度为logn,因此不能进行全部遍历.又因为只需要找到其中的一个 ...
- Linux系统重要快捷键& Shell 常用通配符
[Tab]:使用Tab键来进行命令补全: [Ctrl+c]:强行终止当前程序: [Ctrl+d]:键盘输入结束或退出终端: [Ctrl+s]:暂定当前程序,暂停后按下任意键恢复运行: [Ctrl+z] ...
- 对客户推荐产品模型+python代码
首先观看数据: l 数据的基本特征用 describe 描述每个基本特征 l 画图画出每个特征的基本统计图 应用import matplotlib.pylab as pl 画图显示 l 关 ...
- ueditor工具栏更改按钮的默认操作
ueditor 上的 image 按钮,默认有一个图片选择工具. 但是我想把他去掉,用上自己写的图片选择功能. 原来使用cleditor 是可以给按钮自定义一个函数.但是在ueditor就没有找到可以 ...
- css3--布局正六边形
怎样布局正六边形?-->如果不能直接布局,就只能采用图形的组合.-->既然是正六边形,则: -->AB=2分之根号3乘2倍的边长,也就是对于矩形ABCD来说,AB是BD的根号3倍(也 ...
- block的常见用法
一.声明和定义 1.声明 声明方式:返回值(^block)(参数).声明时,参数变量名可以省略:使用时,参数变量名不能省略,不然会无法调用传入的参数 void(^block)(); void(^blo ...
- Java优化
Java初级优化 1. 对于明确不需要派生的类,添加final修饰符,此时该类的所有方法都是final的.Java编译器会寻找机会内联(inline)所有的final方法.(能使性能提升50%)2. ...
- No.1 CAS 之LDAP认证服务端集群配置
建档日期: 2016/08/31 最后修改日期: 2016/12/09 1 概述 本文描述了CAS单点登录服务端配置的大概流程,希望抛砖引玉,帮助你完成CAS服务端的配置. 本文采用apa ...
- BZOJ 3594 方伯伯的玉米田
dp好想.bit的优化好想.还有细节: (1)从k->0,这样才不会被本身转移. (2)这个dp表示的是以i结尾的最长的长度,所以随时max. #include<iostream> ...
- navicat在ubuntu下中文乱码的真正解决方法ZT
乱码解决方法(自己解决我自己这种情况之后打猜测): 打开start_navicat文件,会看到 export LANG="en_US.UTF-8" 将这句话改为 export LA ...