【Luogu】P1072Hankson的趣味题(gcd)
可以说我的动手能力还是不行,想到了算法却写不出来。以后说自己数论会GCD的时候只好虚了……
我们首先这么想。
x与a0的最大公约数为a1,那么我们把x/=a1,a0/=a1之后,x和a0不会再有除了1之外的公约数。
证明:设x/a1=c,a0/a1=d.
若有gcd(c,d)=y 则有p=c/y,q=d/y.
反之c=py,d=qy.
则有x=pya1,a0=qya1。
则x和a0共有公约数ya1。
y属于正实数集,因此ya1>a1.
因此gcd(x,a0)=ya1。
又因为gcd(x,a0)=a1,所以假设与推出结果相矛盾,因此得出那行带颜色的结论。
同样可以得出结论:b1=b0,b1/x两数也不应该有除了1之外的公约数。
证明方式参考上面。
代码如下
#include<cstdio>
#include<cctype>
#include<cstring>
#include<algorithm>
inline long long read(){
long long num=,f=;
char ch=getchar();
while(!isdigit(ch)){
if(ch=='-') f=-;
ch=getchar();
}
while(isdigit(ch)){
num=num*+ch-'';
ch=getchar();
}
return num*f;
} long long gcd(long long a,long long b){
if(b==) return a;
return gcd(b,a%b);
} int main(){
int T=read();
while(T--){
int ans=;
int a=read(),b=read(),c=read(),d=read();
for(int i=;i*i<=d;++i){
if(!(d%i)){
if(!(i%b)&&gcd(a/b,i/b)==&&gcd(d/c,d/i)==) ans++;
int j=d/i;
if(i==j) continue;
if(!(j%b)&&gcd(a/b,j/b)==&&gcd(d/c,d/j)==) ans++;
}
}
printf("%d\n",ans);
}
return ;
}
【Luogu】P1072Hankson的趣味题(gcd)的更多相关文章
- 洛谷P1072Hankson的趣味题题解
题目 一道十分经典的数论题,在考场上也可以用暴力的算法来解决,从而得到\(50pts\)的较为可观的分数,而如果想要AC的话,我们观察原题给的数据范围\(a,b,c,d\)(为了好表示,分别代表a1, ...
- P1072Hankson的趣味题
传送 这个题一本通上有,但是为了增强我们的创新精神,思维能力balabala,书上的满分程序不全,要优化一下,在此写一下第二种方法 #include<iostream> #include& ...
- luogu P1072 Hankson的趣味题
题目链接 luogu P1072 Hankson 的趣味题 题解 啊,还是noip的题好做 额,直接推式子就好了 \(gcd(x,a_0)=a_1=gcd(\frac{x}{a_1},\frac{a_ ...
- CodeForces 992B Nastya Studies Informatics + Hankson的趣味题(gcd、lcm)
http://codeforces.com/problemset/problem/992/B 题意: 给你区间[l,r]和x,y 问你区间中有多少个数对 (a,b) 使得 gcd(a,b)=x lc ...
- 算法训练 Hankson的趣味题
算法训练 Hankson的趣味题 时间限制:1.0s 内存限制:64.0MB 问题描述 Hanks 博士是BT (Bio-Tech,生物技术) 领域的知名专家,他的儿子名叫Han ...
- 1172 Hankson 的趣味题[数论]
1172 Hankson 的趣味题 2009年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Descrip ...
- 1172 Hankson 的趣味题
1172 Hankson 的趣味题 2009年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Descrip ...
- Codevs 1172 Hankson 的趣味题 2009年NOIP全国联赛提高组
1172 Hankson 的趣味题 2009年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description Hanks 博 ...
- 一本通1626【例 2】Hankson 的趣味题
1626:[例 2]Hankson 的趣味题 题目描述 Hanks 博士是BT (Bio-Tech,生物技术) 领域的知名专家,他的儿子名叫Hankson.现在,刚刚放学回家的Hankson 正在思考 ...
随机推荐
- java 删除字符串最后一个字符的几种方法
偶然看到的,记录一下,以免忘记 字符串:string s = "1,2,3,4,5," 目标:删除最后一个 "," 方法: 1.用的最多的是Substri ...
- 倒计时器 CountDownTimer
使用介绍 开发中经常会遇到一些和倒计时有关的场景,比如发送验证码的按钮,会在点击发送后,显示倒计时间,倒计时结束后才能够刷新按钮,再次允许点击.为了不阻塞软件的运行,又要实时刷新界面,我们通常会用到 ...
- uvm.sv——UVM之道
文件: $UVM_HOME/src/uvm.sv 类: 无 `include "uvm_pkg.sv" Thus spake the UVM master programm ...
- Gitlab User Guide
Installation Configuration Set user name and email Add SSH keys Repository Create New Repository Clo ...
- 使用 Azure 创建存储和检索文件
本指南将以循序渐进的方式帮助您使用 Azure 将文件存储到云中.我们将逐一介绍如何创建存储账户.创建容器.上传文件.检索文件和删除文件.在本教程中完成的所有操作均符合 1 元试用条件. 本指南将以循 ...
- JBOSS默认连接池配置
jboss5.0mysql连接配置 <?xml version="1.0" encoding="UTF-8"?> <!-- The Hyper ...
- VC-基础:隐藏不安全函数的warning-_CRT_SECURE_NO_WARNINGS
>tmp.cpp(): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strc ...
- 使用jQuery 发送Ajax
jQuery AJAX 方法 AJAX 是一种与服务器交换数据的技术,可以在不重新载入整个页面的情况下更新网页的一部分. 下面的表格列出了所有的 jQuery AJAX 方法: 构建页面:jqlogi ...
- linux 用dd命令读写引导区文件
分类: LINUX 备份MBR,linux下使用如下命令: # dd if=/dev/hda of=/root/linux.bin bs=512 count=1 这里注意使用if=/dev/hda备份 ...
- 无法连接Elasticsearch解决方案
前言 最近还是在弄ELK,并且在测试Logstash从kafka消费日志(最后输出到Elasticsearch). 测试完毕后,在kibana中,并没有发现Elasticsearch中的数据. 后来装 ...