codeforces 299E Cube Problem
Time Limit:2000MS
Memory Limit:262144KB
64bit IO Format:%I64d & %I64u Submit Status Practice
CodeForces 299E
Description Yaroslav, Andrey and Roman love playing cubes. Sometimes they get together and play cubes for hours and hours!
Today they got together again and they are playing cubes. Yaroslav took unit cubes and composed them into an a?×?a?×?a cube, Andrey made a b?×?b?×?b cube and Roman made a c?×?c?×?c cube. After that the game was finished and the guys left. But later, Vitaly entered the room. He saw the cubes and wanted to make a cube as well. But what size should the cube be? Of course it should be a large cube with the side of length a?+?b?+?c. Besides, Vitaly decided to decompose the cubes built by Yaroslav, Andrey and Roman and compose his own large cube out of them. However, it turned out that the unit cubes he got from destroying the three cubes just weren't enough to make a large cube. We know that Vitaly was short of exactly n cubes. Vitaly got upset, demolished everything and left. As he was leaving, he met Petya and told him that there had been three cubes in the room and that he needed another n unit cubes to make his own large cube.
Petya entered the room and saw the messily scattered cubes. He wanted to make it neat and orderly again. But he only knows that there had been three cubes, made of small unit cubes and that Vitaly needed n more unit cubes to make a large one! Help Petya understand, how many ways of sizes a, b, c are there to restore Yaroslav's, Andrey's and Roman's cubes.
Input The single line of the input contains integer n (1?≤?n?≤?10^14). We know that all numbers a, b, c are positive integers.
Please, do not use the %lld specifier to read or write 64-bit integers in С++. It is preferred to use the cin, cout streams or the %I64d specifier.
Output In the single line print the required number of ways. If it turns out that there isn't a single way of suitable sizes of a, b, c, print 0.
Sample Input
Input 24
Output 1
Input 648
Output 7
Input 5
Output 0
Input 93163582512000
Output 39090
/*
n数量级为10^14
题意:(a+b+c)^3-(a^3+b^3+c^3)=n; 化简即为:3*(a+b)*(b+c)*(c+a)=n;
显然n必须mod 3 即为(a+b)*(b+c)*(c+a)=n;(n/=3)
令i=(a+b);j=(b+c);k=(c+a);x^3=n;(i,j,k可以构成三角形!!)
枚举i(1-x);
令a=n/i;(n%i==0)
i+j>k;(1)
j*k=a;(2)
两式消k得:(j+i/2)^2>a+(i/2)^2; 令h=sqrt(a+i/2)^2)-i/2;//核心!!!!
由(2)知j*j<a(j<k)即为j<sqrt(a);
故j枚举范围为:min(i,h)-sqrt(a);
大功告成!!!
*/
#include<stdio.h>
#include<math.h>
#include<algorithm>
using namespace std;
int main()
{
__int64 x,n;
int i,j,a,b,c,y,k,q,p,ans;
scanf("%I64d",&n);
if(n%)
{
printf("0\n");
return ;
}
n=n/; x=; ans=;
while((x+)*(x+)*(x+)<=n)
x++;
for(i=;i<=int(x);i++)
{
if(n%i) continue;
y=sqrt(n/i);q=(sqrt(i*i+*n/i)-i)/;
for(j=i>q?i:q;j<=y;j++)
{
k=n/i/j;
if(k<j) break;
if(n/i%j) continue;
if((i+j+k)%)continue;
p=(i+j+k)/;
a=p-i; b=p-j; c=p-k;
if(a<||b<||c<) continue;
if(a==b&&b==c) ans++;
else if(a==b||b==c) ans+=;
else ans+=;
}
}
printf("%d\n",ans);
return ;
}
codeforces 299E Cube Problem的更多相关文章
- codeforces 340C Tourist Problem
link:http://codeforces.com/problemset/problem/340/C 开始一点也没思路,赛后看别人写的代码那么短,可是不知道怎么推出来的啊! 后来明白了. 首先考虑第 ...
- codeforces B. Routine Problem 解题报告
题目链接:http://codeforces.com/problemset/problem/337/B 看到这个题目,觉得特别有意思,因为有熟悉的图片(看过的一部电影).接着让我很意外的是,在纸上比划 ...
- Codeforces 527D Clique Problem
http://codeforces.com/problemset/problem/527/D 题意:给出一些点的xi和wi,当|xi−xj|≥wi+wj的时候,两点间存在一条边,找出一个最大的集合,集 ...
- Codeforces 706C - Hard problem - [DP]
题目链接:https://codeforces.com/problemset/problem/706/C 题意: 给出 $n$ 个字符串,对于第 $i$ 个字符串,你可以选择花费 $c_i$ 来将它整 ...
- Codeforces 1096D - Easy Problem - [DP]
题目链接:http://codeforces.com/problemset/problem/1096/D 题意: 给出一个小写字母组成的字符串,如果该字符串的某个子序列为 $hard$,就代表这个字符 ...
- Codeforces 793C - Mice problem(几何)
题目链接:http://codeforces.com/problemset/problem/793/C 题目大意:给你一个捕鼠器坐标,和各个老鼠的的坐标以及相应坐标的移动速度,问你是否存在一个时间点可 ...
- CodeForces 687A NP-Hard Problem
Portal:http://codeforces.com/problemset/problem/687/A 二分图染色 好模板题 有SPJ 值得注意的是,因为C++的奇妙的运算机制 若在vector变 ...
- Codeforces Gym 100342J Problem J. Triatrip 求三元环的数量 bitset
Problem J. Triatrip Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100342/at ...
- Codeforces Gym 100342C Problem C. Painting Cottages 转化题意
Problem C. Painting CottagesTime Limit: 2 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/10 ...
随机推荐
- MySQL的explain分析sql语句
explain分析查询 使用 EXPLAIN 关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的.这可以帮你分析你的查询语句或是表结构的性能瓶颈.通过explain命 ...
- vim系统剪切板
原文地址 1.vim常用复制粘贴命令 Vim的复制粘贴命令无疑是y (yank),p(paster),加上yy,P PS: vim有个很有意思的约定(我觉得是一种约定),就是某个命令的大小写都是实现某 ...
- Quartz最佳实践
本文来自对http://www.quartz-scheduler.org/documentation/best-practices.html的翻译. 表示还没用过Quartz,正准备用的,然后在官网上 ...
- 阶段3 1.Mybatis_11.Mybatis的缓存_3 mybatis一对一实现延迟加载
不用骨架创建项目 复制一对多的代码src下的代码到我们刚才创建的项目里面 把依赖信息复制过来 这里原来实现的功能是立即加载的功能.sql语句是一次性查询的两个表关联的查询. 调整代码 删除Accoun ...
- 《Using Python to Access Web Data》Week4 Programs that Surf the Web 课堂笔记
Coursera课程<Using Python to Access Web Data> 密歇根大学 Week4 Programs that Surf the Web 12.3 Unicod ...
- 正则表达式——Unicode 属性列表
7.7.1 Unicode Property 每个 Unicode 字符都只能属于一个 Unicode Property.所有的 Unicode Property 共分为7大类,30小类.大类的名 ...
- Eclipse 添加Hibernate 插件
打开Eclipse, Help-->Eclipse Marketplace 在搜索框输入JBoss-Tools ,回车 根据搜索结果选择与自己Eclipse版本匹配的JBoss,然后点击 ...
- [19/09/18-星期三] Python中的序列
一. # 第四章 序列(视频58-76) ## 列表(list) - 列表是Python中的一个对象 - 对象(object)就是内存中专门用来存储数据的一块区域 - 之前我们学习的对象,像数值,它只 ...
- kafka生产者java客户端
producer 包含一个用于保存待发送消息的缓冲池,缓冲池中消息是还没来得及传输到kafka集群的消息. 位于底层的kafka I/O线程负责将缓冲池中的消息转换成请求发送到集群.如果在结束prod ...
- linux中断处理上下部分
一.linux中断处理为什么要分为上下部 1.1. 中断处理的上半部(top half,又叫顶半部)和处理的下半部(bottom half,又叫底半部) 1.1. linux中断处理不参与调度,故中断 ...