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条边组成 ...
随机推荐
- NYOJ-517-最小公倍数,大数啊~~~
最小公倍数 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 为什么1小时有60分钟,而不是100分钟呢?这是历史上的习惯导致.但也并非纯粹的偶然:60是个优秀的数字,它的 ...
- 什么样的经历,才能领悟成为架构师? >>>
什么样的经历,才能领悟成为架构师? >>> 本文主要分析 SpringBoot 的启动过程. SpringBoot的版本为:2.1.0 release,最新版本. 一.时序图 还是老 ...
- codeforces 315B
#include<stdio.h> int main() { int n,k,i,flag=0; while(scanf("%d%d",&n,&k)!= ...
- 为docker容器设置独立ip
docker 1.12使用新版macvlan设置与宿主机同网段ip ****************************************** 由于开发的一些特殊需求,需要将容器部署在与宿主 ...
- 学.net必学的东西 10项【不知道我能不能学这么多,!- -,光程序编辑我都累死了】
原文发布时间为:2008-10-30 -- 来源于本人的百度文章 [由搬家工具导入] 10项.NET必学的技术2007年08月28日 星期二 14:58 1、WCF (Windows Communic ...
- java 字节码 指令集
有时候为了能理解JVM对程序所做的优化等,需要查看程序的字节码,因此知道了解一些常见的指令集很重要! 指令码 助记符 说明 0x00 nop 什么都不做 0x01 aconst_null 将null推 ...
- P1427 小鱼的数字游戏 洛谷
https://www.luogu.org/problem/show?pid=1427 题目描述 小鱼最近被要求参加一个数字游戏,要求它把看到的一串数字(长度不一定,以0结束,最多不超过100个,数字 ...
- Java面试题总结之数据库与SQL语句
1.有3 个表,表结构如下: Student 学生表(学号,姓名,性别,年龄,组织部门) Course 课程表(编号,课程名称) Sc 选课表(学号,课程编号,成绩). 1)写一个SQL 语句, ...
- 洛谷 P3807 【模板】卢卡斯定理
P3807 [模板]卢卡斯定理 题目背景 这是一道模板题. 题目描述 给定n,m,p(1\le n,m,p\le 10^51≤n,m,p≤105) 求 C_{n+m}^{m}\ mod\ pCn+mm ...
- Java中long(Long)与int(Integer)之间的转换(转)
一.将long型转化为int型,这里的long型是基础类型: long a = 10; int b = (int)a; 二.将Long型转换为int型,这里的Long型是包装类型: Long a = ...