zoj 3673 1729
1729
Time Limit: 3 Seconds Memory Limit: 65536 KB
1729 is the natural number following 1728 and preceding 1730. It is also known as the Hardy-Ramanujan number after a famous anecdote of the British mathematician G. H. Hardy regarding a hospital visit to the Indian mathematician Srinivasa Ramanujan. In Hardy's words:
I remember once going to see him when he was ill at Putney. I had ridden in taxi cab number 1729 and remarked that the number seemed to me rather a dull one, and that I hoped it was not an unfavorable omen. "No," he replied, "it is a very interesting number; it is the smallest number expressible as the sum of two (positive) cubes in two different ways."
The two different ways are these: 1729 = 13 + 123 = 93 + 103
Now your task is to count how many ways a positive number can be expressible as the sum of two positive cubes in. All the numbers in this task can be expressible as the sum of two positive cubes in at least one way.
Input
There're nearly 20,000 cases. Each case is a positive integer in a single line. And all these numbers are greater than 1 and less than 264.
Output
Please refer to the sample output. For each case, you should output a line. First the number of ways n. Then followed by n pairs of integer, (ai,bi), indicating a way the given number can be expressible as the sum of ai's cube and bi's. (ai≤ bi, and a1< a2< ...< an)
Sample Input
9
4104
2622104000
21131226514944
48988659276962496
Sample Output
1 (1,2)
2 (2,16) (9,15)
3 (600,1340) (678,1322) (1020,1160)
4 (1539,27645) (8664,27360) (11772,26916) (17176,25232)
5 (38787,365757) (107839,362753) (205292,342952) (221424,336588) (231518,331954)
Hint
Although most numbers cannot be expressible as the sum of two positive cubes, the vast majority of numbers in this task can be expressible as the sum of two positive cubes in two or more ways.
题意:给一个数字N,问有多少中方法组成 a^3+b^3 = N,把每一种情况输出来。
思路:a^3+b^3 = (a^2+b^2-ab)*(a+b) 那么我们就知道(a+b)是N的一个因子。
由此枚举每一个因子。
#include<iostream>
#include<stdio.h>
#include<cstring>
#include<math.h>
#include<cstdlib>
#include<algorithm>
using namespace std;
typedef unsigned long long LL;
const int maxn = +; struct node
{
LL x,y;
} tom[];
int tlen;
LL prime[];
int len;
bool s[maxn];
void init()
{
memset(s,false,sizeof(s));
len = ;
for(int i=; i<maxn; i++)
if(s[i]==false)
{
prime[++len]=i;
for(int j=i+i; j<maxn; j=j+i)
s[j]=true;
}
}
LL fac[],num[];
int flen;
void Euler(LL n)
{
int i,count;
flen = ;
for(i=; prime[i]*prime[i]<=n; i++)
{
if(n%prime[i]==)
{
count = ;
while(n%prime[i]==)
{
n=n/prime[i];
count++;
}
fac[++flen]=prime[i];
num[flen]=count;
}
}
if(n!=)
{
fac[++flen]=n;
num[flen]=;
}
} LL Q[];
int qlen;
void solve()
{
Q[]=;
qlen = ;
for(int i=; i<=flen; i++)
{
int k;
int s=;
for(int j=; j<=num[i]; j++)
{
k = qlen;
for(; s<=k; s++)
Q[++qlen]=Q[s]*fac[i];
}
}
}
int main()
{
LL n;
int T=;
init();
while(scanf("%llu",&n)>)
{
Euler(n);
solve();
sort(Q+,Q++qlen);
tlen=;
int NUM=;
for(int i=; i<=qlen; i++)
{
LL y = (Q[i]*Q[i]-n/Q[i])/;
LL x = Q[i];
if(x*x>=*y)
{
LL ss = (LL)sqrt((x*x-*y)*1.0);
LL ans1 = (x-ss)/;
LL ans2 = (x+ss)/;
if(ans1==||ans2==)continue;
if(ans1*ans1*ans1+ans2*ans2*ans2==n)
{
tom[++tlen].x=ans1;
tom[tlen].y=ans2;
NUM++;
}
}
}
printf("%d",NUM);
for(int i=; i<=tlen; i++)
printf(" (%llu,%llu)",tom[i].x,tom[i].y);
printf("\n");
}
return ;
}
zoj 3673 1729的更多相关文章
- ZOJ Monthly, November 2012
A.ZOJ 3666 Alice and Bob 组合博弈,SG函数应用 #include<vector> #include<cstdio> #include<cstri ...
- zoj 1729 Hidden Password
Hidden Passwordhttp://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=729 Time Limit: 2 Seconds ...
- ZOJ 1729 Hidden Password (字符串最小表示)
以前听过,不知道是什么,其实就是字符串首尾相连成一个环,n种切法求一个字典序最小的表示. 朴素算法大家都懂.O(n)的算法代码非常简单,最主要的思想是失配的时候尽可能大的移动指针. 另外附上一个不错的 ...
- ZOJ题目分类
ZOJ题目分类初学者题: 1001 1037 1048 1049 1051 1067 1115 1151 1201 1205 1216 1240 1241 1242 1251 1292 1331 13 ...
- ZOJ People Counting
第十三届浙江省大学生程序设计竞赛 I 题, 一道模拟题. ZOJ 3944http://www.icpc.moe/onlinejudge/showProblem.do?problemCode=394 ...
- ZOJ 3686 A Simple Tree Problem
A Simple Tree Problem Time Limit: 3 Seconds Memory Limit: 65536 KB Given a rooted tree, each no ...
- [BZOJ3223]Tyvj 1729 文艺平衡树
[BZOJ3223]Tyvj 1729 文艺平衡树 试题描述 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:翻转一个区间,例如原有序序列是5 4 3 2 1,翻转区 ...
- ZOJ Problem Set - 1394 Polar Explorer
这道题目还是简单的,但是自己WA了好几次,总结下: 1.对输入的总结,加上上次ZOJ Problem Set - 1334 Basically Speaking ac代码及总结这道题目的总结 题目要求 ...
- ZOJ Problem Set - 1392 The Hardest Problem Ever
放了一个长长的暑假,可能是这辈子最后一个这么长的暑假了吧,呵呵...今天来实验室了,先找了zoj上面简单的题目练练手直接贴代码了,不解释,就是一道简单的密文转换问题: #include <std ...
随机推荐
- php数组序列化serialize与unserialize
$arr=array('1','2','3');echo serialize($arr); //序列化 a:3:{i:0;s:1:"1";i:1;s:1:"2" ...
- IOS第18天(2,CALayer自定义图层)
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typica ...
- mysql5.5手册读书日记(3)
<?php /* MySQL_5.5中文参考手册 587开始 与GROUP BY子句同时使用的函数和修改程序 12.10.1. GROUP BY(聚合)函数 12.10.2. GROUP BY修 ...
- 关于怎样解决eclipse打开时出现的Failed to load the JNIshared library亲测有效
之前一直可以正常使用eclipse但是当我装了Oracle后打开后就出现了Failed to load the JNIshared library(下面还出现了一个jvm.dll的文件路径),当时就蒙 ...
- java基础学习总结——基础语法1
一.标识符
- Airline Hub
参考:http://blog.csdn.net/mobius_strip/article/details/12731459 #include <stdio.h> #include < ...
- 《Linux内核分析》第三周 构建一个简单的Linux系统MenuOS
[刘蔚然 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000] WEEK THREE ...
- 临时存存储页面上的数据---js中的cookie
实现的效果: 当点击某个按钮的时候,实现点击A的同时,弹出B的注册div,使填写在B信息数据保存下来,点击B的确定按钮,B消失,A的图标往后移动一格,原来的位置为图标C,点击C可以弹出来一个链接的页面 ...
- ssm框架中的struts我的配置问题
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC &qu ...
- cat <<EOF用法
转自:http://blog.csdn.net/apache0554/article/details/45508631 cat <<EOF和cat <<-EOF两个都是获取st ...