【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. ...
随机推荐
- redis缓存雪崩
缓存雪崩 缓存雪崩,是指在某一个时间段,缓存集中过期失效. 产生雪崩的原因之一,比如在写本文的时候,马上就要到双十二零点,很快就会迎来一波抢购,这波商品时间比较集中的放入了缓存,假设缓存一个小时.那么 ...
- 有关于eclipse启动调试时出现EOFexpetion错误的解决办法
1.打开调试透视窗 2.找到所有断点 3.清空所有断点后再去打断点,再去调试 网上说法:这个问题可能是由于eclipse和tomcat的交互而产生的,在以debug模式启动tomcat时,发生了读取文 ...
- sql server row_number分页
row_number分页 SELECT TOP 10* --pageSize =10FROM ( SELECT *, row_number () OVER (ORDER BY a.bsqID ...
- MySQL 主从同步架构中你不知道的“坑”(2)
指定同步库情况 1.binlog_format= ROW模式 mysql> use testdb; Database changed mysql> show tables; +----- ...
- react + antd Form表单校验
非空限制 {getFieldDecorator('name', { rules: [{ required: true, message: '名称不能为空', }],})( <Input plac ...
- SVM处理多分类问题
"one-against-one" approach from sklearn import svm X = [[0], [1], [2], [3]] Y = [0, 1, 2, ...
- shell 里面的计算
---恢复内容开始--- 关于shell里面的计算其实早在接触LINUX的时候就已经接触到了.每次在运用的时候却是在网上到处找,所以觉得花点时间好好研究下. 首先了解下常用的算数运算符号: + - ...
- 从程序员小仙飞升上神,java技术开发要如何实现?
新霸哥是一个专业从事java开发的,近期,新霸哥发现很多的朋友在问,从程序员小仙飞升上神难吗?在此新霸哥将为你详细的介绍,下面新霸哥将从新手入门和老司机进阶多方面详细的为大家介绍一下. 说起java首 ...
- springmvc视图文件的保护
可以将视图文件,包含视图文件的目录放在WEB-INF下,WEB-INF是受保护的,放在该目录下,就只能在代码中访问到了view文件了,用户无法通过浏览器直接输入地址访问.
- Summer training round2 #6 (Training #22)
A:二分答案 如果中位数比目前的大就right=mid-1 else left=mid+1 C!:几何 G:优先队列贪心 #include <bits/stdc++.h> using na ...