【HDOJ5447】Good Numbers(数论)
题意:

思路:From https://blog.csdn.net/qq_36553623/article/details/76683438
大概就是把1e6里面的质因子能除的都除光之后借助两者gcd中有最大质因子的条件分类讨论
其实也就5类,重点是如何设分类的标准,其实唯一的标准就是对答案的贡献
int128本机环境跑不了,只能交上去的时候改,总觉得有朝一日要掉坑里
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned int uint;
typedef unsigned long long ull;
typedef long double ld;
typedef pair<int,int> PII;
typedef pair<ll,ll> Pll;
typedef vector<int> VI;
typedef vector<PII> VII;
typedef pair<ll,ll>P;
#define N 1000000+10
#define M 200000+10
#define INF 1e9
#define fi first
#define se second
#define MP make_pair
#define pb push_back
#define pi acos(-1)
#define mem(a,b) memset(a,b,sizeof(a))
#define rep(i,a,b) for(int i=(int)a;i<=(int)b;i++)
#define per(i,a,b) for(int i=(int)a;i>=(int)b;i--)
#define lowbit(x) x&(-x)
#define Rand (rand()*(1<<16)+rand())
#define id(x) ((x)<=B?(x):m-n/(x)+1)
#define ls p<<1
#define rs p<<1|1
#define fors(i) for(auto i:e[x]) if(i!=p) const int MOD=,inv2=(MOD+)/;
//int p=1e4+7;
double eps=1e-;
int dx[]={-,,,};
int dy[]={,,-,}; int p[N],b[N]; int read()
{
int v=,f=;
char c=getchar();
while(c<||<c) {if(c=='-') f=-; c=getchar();}
while(<=c&&c<=) v=(v<<)+v+v+c-,c=getchar();
return v*f;
} ll readll()
{
ll v=,f=;
char c=getchar();
while(c<||<c) {if(c=='-') f=-; c=getchar();}
while(<=c&&c<=) v=(v<<)+v+v+c-,c=getchar();
return v*f;
} template<class T> void Read(T &x)
{
static int CH;
while((CH=getchar())<''||CH>'');
for(x=CH-'';(CH=getchar())>=''&&CH<='';x=(x<<)+(x<<)+(CH-''));
} int is2(__int128 x)
{
__int128 t=pow(x,1.0/)+0.5;
if(t*t==x) return ;
return ;
} int is3(__int128 x)
{
__int128 t=pow(x,1.0/)+0.5;
if(t*t*t==x) return ;
return ;
} void calc(ll &ans,__int128 x,__int128 y)
{
if(y==)
{
if(x==) ans*=;
else if(is3(x)) ans*=;
else if(is2(x)) ans*=;
else ans*=;
}
else if(y>&&is2(y))
{
if(y%x==) ans*=;
else ans*=;
}
else if(x>&&is2(x))
{
if(x%y==) ans*=;
else ans*=;
}
else if(y%x==) ans*=;
else ans*=;
} int main()
{
//freopen("1.in","r",stdin);
//freopen("1.out","w",stdout);
int n=;
rep(i,,1e6)
{
if(!b[i]) p[++n]=i;
rep(j,,n)
{
int t=p[j]*i;
if(t>1e6) break;
b[t]=;
if(i%p[j]==) break;
}
}
int cas=read();
while(cas--)
{
__int128 s1,s2;
Read(s1);
Read(s2);
ll ans1,ans2;
ans1=ans2=;
rep(i,,n)
{
if(s1%p[i]==)
{
int s=;
while(s1%p[i]==)
{
s++;
s1/=p[i];
}
ans1*=s;
}
if(s2%p[i]==)
{
int s=;
while(s2%p[i]==)
{
s++;
s2/=p[i];
}
ans2*=s;
}
}
__int128 k=std::__gcd(s1,s2);
calc(ans1,k,s1/k);
calc(ans2,k,s2/k);
printf("%I64d %I64d\n",ans1,ans2);
}
return ;
}
【HDOJ5447】Good Numbers(数论)的更多相关文章
- UVA 10006 - Carmichael Numbers 数论(快速幂取模 + 筛法求素数)
Carmichael Numbers An important topic nowadays in computer science is cryptography. Some people e ...
- UVA 10539 - Almost Prime Numbers(数论)
UVA 10539 - Almost Prime Numbers 题目链接 题意:给定一个区间,求这个区间中的Almost prime number,Almost prime number的定义为:仅 ...
- codeforces 446C DZY Loves Fibonacci Numbers 数论+线段树成段更新
DZY Loves Fibonacci Numbers Time Limit:4000MS Memory Limit:262144KB 64bit IO Format:%I64d &a ...
- POJ 3641 Pseudoprime numbers (数论+快速幂)
题目链接:POJ 3641 Description Fermat's theorem states that for any prime number p and for any integer a ...
- UVA138 Street Numbers(数论)
题目链接. 题意: 找一个n,和一个m(m < n),求使得1~m的和等于m~n的和,找出10组m,n 分析: 列出来式子就是 m*(m+1)/2 = (n-m+1)*(m+n)/2 化简后为 ...
- Codeforces899C Dividing the numbers(数论)
http://codeforces.com/problemset/problem/899/C tot为奇数时,绝对差为1:tot为偶数时,绝对差为0. 难点在于如何输出. #include<io ...
- hdu多校第八场 1003 (hdu6659) Acesrc and Good Numbers 数论/打表
题意: 对于某数k,若数字d在1-k中出现次数恰好为k,则称k为好数. 给定d,x,求x以内,对于d而言最大的好数.k范围1e18. 题解: 打表二分即可. 但是,1e18的表是没法打出来的,只能在o ...
- 杭电ACM分类
杭电ACM分类: 1001 整数求和 水题1002 C语言实验题——两个数比较 水题1003 1.2.3.4.5... 简单题1004 渊子赛马 排序+贪心的方法归并1005 Hero In Maze ...
- 转载:hdu 题目分类 (侵删)
转载:from http://blog.csdn.net/qq_28236309/article/details/47818349 基础题:1000.1001.1004.1005.1008.1012. ...
随机推荐
- 安装破解MyEclipse2017CI
一.下载 1.Myeclipse官网下载地址:http://www.myeclipsecn.com/download/ 2.破解补丁链接:https://pan.baidu.com/s/1Ge_fbm ...
- Linux在线安装MongoDB
Mongo官网安装地址: https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/ 以MongoDB3.4为例 1.创建 ...
- sqlserver安装和踩坑经历
sqlserver安装和踩坑经历 下载 下载 安装 大致是按照这个来的 安装教程 出错 windows系统安装软件弹出"Windows installer service could not ...
- 简单了解运用Git
Git是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的分布式版本控制系统. SVN是集中式的. Git没有中央服务器,每台电脑就是一个完整的版本库 ,工作无需 ...
- Android渐变色xml配置
这里渐变色: <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android=&quo ...
- 一步一步带你入门MySQL中的索引和锁 (转)
出处: 一步一步带你入门MySQL中的索引和锁 索引 索引常见的几种类型 索引常见的类型有哈希索引,有序数组索引,二叉树索引,跳表等等.本文主要探讨 MySQL 的默认存储引擎 InnoDB 的索引结 ...
- etcd集群安装
etcd 是一个分布式一致性k-v存储系统,可用于服务注册发现与共享配置,具有以下优点:1.简单:相比于晦涩难懂的paxos算法,etcd基于相对简单且易实现的raft算法实现一致性,并通过gRPC提 ...
- Docker 数据卷与容器互联
Docker是基于Go语言实现的开源容器项目,Docker让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制, ...
- python网络爬虫(3)python爬虫遇到的各种问题(python版本、进程等)
import urllib2 源地址 在python3.3里面,用urllib.request代替urllib2 import urllib.request as urllib2 import coo ...
- 【Tomcat】热部署的遗留配置导致服务器无法启动
1.问题描述: 今天用myeclipse写了个小demo,然后用Tomcat7 部署了,接着点击启动服务器,服务器居然报错: 严重: Error starting static Resources j ...