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. 云计算仿真软件Cloudsim介绍以及类的功能介绍

    一·云计算的介绍 云计算仿真软件,称为CloudSim.它是在离散事件模拟包SimJava上开发的函数库,可在Windows和Linux系统上跨平台运行,CloudSim继承了GridSim的编程模型 ...

  2. c#中文转全拼或首拼

    参考:http://www.jb51.net/article/42217.htmhttp://blog.csdn.net/cstester/article/details/4758172 Chines ...

  3. redis 安装(centos 6.4)

    我使用6.4系统,mark一下,其他版本应该也一样. wget wget http://download.redis.io/releases/redis-3.0.6.tar.gz make make ...

  4. 读取文件内容fopen,fgets,fclose

    <?php //首先采用“fopen”函数打开文件,得到返回值的就是资源类型.$file_handle = fopen("/data/webroot/resource/php/f.tx ...

  5. 大数相乘nyoj28

    描述我们都知道如何计算一个数的阶乘,可是,如果这个数很大呢,我们该如何去计算它并输出它?   输入 输入一个整数m(0<m<=5000) 输出 输出m的阶乘,并在输出结束之后输入一个换行符 ...

  6. 将gridFS中的图片文件写入硬盘

    开启用户验证下的gridfs 连接使用,在执行脚本前可以在python shell中 from pymongo import Connectionfrom gridfs import *con = C ...

  7. 《JAVA开发环境的熟悉》实验报告——20145337

  8. BizTalk开发系列(四) 深入Map测试

    在BizTalk的开发过程中XML消息间的映射是一个很重要的内容.如果只是一般的从源节点的值复制到目标节点的话,BizTalk项目提供的 MAP测试和验证就已经可以满足需求了.但是很多时候需要在映射的 ...

  9. Android课程---Activity 的生命周期

    activity类处于android.app包中,继承体系如下: 1.java.lang.Object 2.android.content.Context 3.android.app.Applicat ...

  10. IOS第11天(1:UIPickerView点餐)

    UIPickerView #import "ViewController.h" @interface ViewController ()<UIPickerViewDataSo ...