BZOJ_4459_[Jsoi2013]丢番图_数学+分解质因数
BZOJ_4459_[Jsoi2013]丢番图_数学+分解质因数
Description
丢番图是亚历山大时期埃及著名的数学家。他是最早研究整数系数不定方程的数学家之一。
为了纪念他,这些方程一般被称作丢番图方程。最著名的丢番图方程之一是x^N+y^n=z^N。费马
提出,对于N>2,x,y,z没有正整数解。这被称为“费马大定理”,它的证明直到最近才被安德
鲁·怀尔斯(AndrewWiles)证明。
考虑如下的丢番图方程:
1/x+1/y=1/n(x,y,n属于N+) (1)
小G对下面这个问题十分感兴趣:对于一个给定的正整数n,有多少种本质不同的解满足方
程(1)?例如n=4,有三种本质不同(x≤y)的解:
1/5+1/20=1/4
1/6+1/12=1/4
1/8+1/8=1/4
显然,对于更大的n,没有意义去列举所有本质不同的解。你能否帮助小G快速地求出对于
给定n,满足方程(1)的本质不同的解的个数?
Input
一行,仅一个整数n(1<=N<=10^14)
Output
一行,输出对于给定整数n,满足方程(1)的本质不同的解的个数。
Sample Input
Sample Output
$xn+yn=xy$
$(x-n)*(y-n)=n^{2}$
于是转化为了求$n$的约数个数。
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <stdlib.h>
#include <math.h>
using namespace std;
typedef long long ll;
int a[]={2,3,5,7,11,13,17,19,23};
ll ch(ll a,ll b,ll mod) {
ll d=(ll)floor(1.0*a/mod*b+0.5),re=a*b-d*mod; return re<0?re+mod:re;
}
ll random(ll l,ll r) {
return ((rand()*(1ll<<45))+(rand()<<30)+(rand()<<15)+(rand()))%(r-l+1)+l;
}
ll qp(ll x,ll y,ll mod) {
ll re=1;
for(;y;y>>=1ll,x=ch(x,x,mod)) if(y&1) re=ch(re,x,mod); return re;
}
ll Abs(ll x) {return x>0?x:-x;}
ll gcd(ll x,ll y) {return y?gcd(y,x%y):x;}
ll yy[23333];
bool check(ll a,ll n,ll r,ll s) {
ll x=qp(a,r,n),y=x;
int i;
for(i=1;i<=s;i++,y=x) {
x=ch(x,x,n);
if(x==1&&y!=1&&y!=n-1) return 0;
}
return x==1;
}
bool MR(ll n) {
if(n<=1) return 0;
ll r=n-1,s=0;
int i;
for(;!(r&1);r>>=1ll,s++);
for(i=0;i<3;i++) {
if(a[i]==n) return 1;
if(!check(a[i],n,r,s)) return 0;
}
return 1;
}
ll PR(ll n,ll c) {
ll x=random(0,n-1),y=x,p;
for(p=1;p==1;) {
x=(ch(x,x,n)+c)%n;
y=(ch(y,y,n)+c)%n;
y=(ch(y,y,n)+c)%n;
p=gcd(Abs(x-y),n);
}
return p;
}
void solve(ll n) {
if(n<=1) return ;
if(MR(n)) {
yy[++yy[0]]=n; return ;
}
ll tmp=n;
while(tmp==n) tmp=PR(n,random(0,n-1));
solve(tmp); solve(n/tmp);
}
int main() {
ll n;
scanf("%lld",&n);
while(n%2==0) {
yy[++yy[0]]=2; n/=2;
}
solve(n);
sort(yy+1,yy+yy[0]+1);
ll lst=-1;
int i,now=0;
ll ans=1;
for(i=1;i<=yy[0];i++) {
if(lst!=yy[i]) {
ans=ans*(2*now+1);
now=0; lst=yy[i];
}
now++;
// printf("%lld\n",yy[i]);
}
ans=ans*(2*now+1);
printf("%lld\n",ans+1>>1);
}
BZOJ_4459_[Jsoi2013]丢番图_数学+分解质因数的更多相关文章
- bzoj 4459: [Jsoi2013]丢番图 -- 数学
4459: [Jsoi2013]丢番图 Time Limit: 10 Sec Memory Limit: 64 MB Description 丢番图是亚历山大时期埃及著名的数学家.他是最早研究整数系 ...
- bzoj4459[Jsoi2013]丢番图
bzoj4459[Jsoi2013]丢番图 题意: 丢番图方程:1/x+1/y=1/n(x,y,n∈N+) ,给定n,求出关于n的丢番图方程有多少组解.n≤10^14. 题解: 通分得yn+xn=xy ...
- 【bzoj4459】[Jsoi2013]丢番图 分解质因数
题目描述 丢番图是亚历山大时期埃及著名的数学家.他是最早研究整数系数不定方程的数学家之一.为了纪念他,这些方程一般被称作丢番图方程.最著名的丢番图方程之一是x^N+y^n=z^N.费马提出,对于N&g ...
- BZOJ 4459: [Jsoi2013]丢番图 数学推导
之前绝对做过几乎一模一样的题,现在做竟然忘了. code: #include <bits/stdc++.h> #define ll long long #define setIO(s) f ...
- [luogu5253]丢番图【数学】
传送门 [传送门] 题目大意 求\(\frac{1}{x}+\frac{1}{y}=\frac{1}{n}\)有多少组不同的解. 分析 将式子转化成\((n-x)(n-y)=n^2\)的形式. 那么很 ...
- 【bzoj4459】JSOI2013丢番图
某JSOI夏令营出题人啊,naive! 你还是得学习个,搬这种原题不得被我一眼看穿? 求个n^2的约数除以二,向上取整. #include<bits/stdc++.h> using nam ...
- Project Euler 110:Diophantine reciprocals II 丢番图倒数II
Diophantine reciprocals II In the following equation x, y, and n are positive integers. For n = 4 th ...
- Project Euler 108:Diophantine reciprocals I 丢番图倒数I
Diophantine reciprocals I In the following equation x, y, and n are positive integers. For n = 4 the ...
- BZOJ_2467_[中山市选2010]生成树_数学
BZOJ_2467_[中山市选2010]生成树_数学 [Submit][Status][Discuss] Description 有一种图形叫做五角形圈.一个五角形圈的中心有1个由n个顶点和n条边组成 ...
随机推荐
- [Kubernetes]Volume
容器技术使用rootfs机制和Mount Namespace,构建出一个同宿主机完全隔离开的文件系统环境 那容器里进程新建的文件,怎么样才能让宿主机获取到?宿主机上的文件和目录,怎么样才能让容器里的进 ...
- HDU 1874 最直接的最短路径问题
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1874 Problem Description 某省自从实行了很多年的畅通工程计划后,终于修建了很多路. ...
- [luoguP2962] [USACO09NOV]灯Lights(高斯消元 + dfs)
传送门 先进行高斯消元 因为要求最少的开关次数,那么: 对于关键元,我们可以通过带入消元求出, 对于自由元,我们暴力枚举,进行dfs,因为只有开关两种状态,0或1 #include <cmath ...
- vs2010 相对路径
相对路径是针对后缀为vcxproj文件而言的. 在VS的工程中常常要设置头文件的包含路径,当然你可以使用绝对路径,但是如果你这样设置了你只能在你自己的机器上运行该工程:如果其他人拷贝你的工程到其他机器 ...
- 第18章:MYSQL分区
第18章:分区 目录 18.1. MySQL中的分区概述 18.2. 分区类型 18.2.1. RANGE分区 18.2.2. LIST分区 18.2.3. HASH分区 18.2.4. KEY分区 ...
- django学习之- 数据缓存
5种配置:开发调试 CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.dummy.DummyCache', # 引擎内存CA ...
- JAVA实现选择排序,插入排序,冒泡排序,以及两个有序数组的合并
一直到大四才开始写自己的第一篇博客,说来实在有点羞愧.今天写了关于排序的算法题,有插入排序,冒泡排序,选择排序,以下贴上用JAVA实现的代码: public class test5 { public ...
- Atom列编辑快捷键
安装这个:sublime-style-column-selection,在Ubuntu下使用[Shitf]+鼠标左键选择.
- [BLE--Physical Layer]
简述 BLE的物理层,可能做IC或板极硬件RF測试的会比較关注. 是偏硬件层面的. 频率带宽和信道分配 BLE工作于2.4 GHz ISM频段2400-2483.5 MHz,ISM频段是公用的,不须要 ...
- 海量数据处理面试题学习zz
来吧骚年,看看海量数据处理方面的面试题吧. 原文:(Link, 其实引自这里 Link, 而这个又是 Link 的总结) 另外还有一个系列,挺好的:http://blog.csdn.net/v_jul ...