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. (aibi, 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的更多相关文章

  1. ZOJ Monthly, November 2012

    A.ZOJ 3666 Alice and Bob 组合博弈,SG函数应用 #include<vector> #include<cstdio> #include<cstri ...

  2. zoj 1729 Hidden Password

    Hidden Passwordhttp://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=729 Time Limit: 2 Seconds ...

  3. ZOJ 1729 Hidden Password (字符串最小表示)

    以前听过,不知道是什么,其实就是字符串首尾相连成一个环,n种切法求一个字典序最小的表示. 朴素算法大家都懂.O(n)的算法代码非常简单,最主要的思想是失配的时候尽可能大的移动指针. 另外附上一个不错的 ...

  4. ZOJ题目分类

    ZOJ题目分类初学者题: 1001 1037 1048 1049 1051 1067 1115 1151 1201 1205 1216 1240 1241 1242 1251 1292 1331 13 ...

  5. ZOJ People Counting

    第十三届浙江省大学生程序设计竞赛 I 题, 一道模拟题. ZOJ  3944http://www.icpc.moe/onlinejudge/showProblem.do?problemCode=394 ...

  6. ZOJ 3686 A Simple Tree Problem

    A Simple Tree Problem Time Limit: 3 Seconds      Memory Limit: 65536 KB Given a rooted tree, each no ...

  7. [BZOJ3223]Tyvj 1729 文艺平衡树

    [BZOJ3223]Tyvj 1729 文艺平衡树 试题描述 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:翻转一个区间,例如原有序序列是5 4 3 2 1,翻转区 ...

  8. ZOJ Problem Set - 1394 Polar Explorer

    这道题目还是简单的,但是自己WA了好几次,总结下: 1.对输入的总结,加上上次ZOJ Problem Set - 1334 Basically Speaking ac代码及总结这道题目的总结 题目要求 ...

  9. ZOJ Problem Set - 1392 The Hardest Problem Ever

    放了一个长长的暑假,可能是这辈子最后一个这么长的暑假了吧,呵呵...今天来实验室了,先找了zoj上面简单的题目练练手直接贴代码了,不解释,就是一道简单的密文转换问题: #include <std ...

随机推荐

  1. Web前端开发基础 第四课(CSS元素分类)

    元素分类 在讲解CSS布局之前,我们需要提前知道一些知识,在CSS中,html中的标签元素大体被分为三种不同的类型:块状元素.内联元素(又叫行内元素)和内联块状元素. 常用的块状元素有: <di ...

  2. java final方法的作用

    1. 不想让别人修改方法实现. 2. 在方法调用时使用内嵌调用. 3. 有效的“关闭”动态绑定,这样编译器就可以为final方法调用生成更有效的代码. Java编程思想: “然而,大多数情况下,这样做 ...

  3. MyEclipse不能重新发布的解决方案

    myeclipse2015已发布项目上右键clear不重新发布的解决方案: 该项目在server.xml中没有设置自动发布reloadable="true"

  4. IOS第12天(2,UINavigationController导航控制器)

    ****HMAppDelegate.m @implementation HMAppDelegate - (BOOL)application:(UIApplication *)application d ...

  5. Postgres-enum

    -- 1. rename the enum type you want to change alter type some_enum_type rename to _some_enum_type; - ...

  6. 开发回归测试之Selenium开发环境搭建

    前言 在解bug的过程中,经常遇到解完某个bug带来新的bug,原因一般是因为回归测试不足或不全面,下面我们来看看怎么利用selenium工具来完成开发后的回归测试, 虽然这可能是QA的事,不过有利于 ...

  7. mvc 扩展htmlhelper

    using System.Web.Mvc; namespace System.Web.Mvc{    public static class HtmlExtend    {        public ...

  8. C 数组模拟阶乘运算

    #include <stdio.h> void rdump(int arr[],int len) { ; ;i >= ; --i) { printf("%d",a ...

  9. 【C++】int、const char*、char*、char、string之间的转换

    #include "stdafx.h" #include<string> #include<vector> #include<iostream> ...

  10. VS 创建虚拟目录失败,映射到其他文件夹!

    今天,改一哥们项目!立马,问了一下原因.支支吾吾的气死LZ! 算了,就不信自己琢磨不出来!哼 找了半天,坑爹的是在Web.csproj文件中! 用txt打开,发现这个东东! <UseIIS> ...