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 ...
随机推荐
- class 用法 函数变量的作用域
函数变量的作用域 1. 函数体内声明的变量 2. 参数中的变量 没有赋值的 function fn(a){} 赋值的,值不是变量 function fn(a=45){} 赋的值为变量 function ...
- Python 使用PyQt5进行开发(一)
Qt 是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架.它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器. 我们先简单使用Qt进行一个小工 ...
- Maven中的dependency详解
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> & ...
- webpack中的 chunk,module,bundle的区别,以及hidden modules是什么
hidden modules是什么: chunk,module,bundle的区别 总结: module是指任意的文件模块,等价于commonjs中的模块 chunks是webpack处理过程中被分组 ...
- PARAMETERS对象
1. PARAMETERS的基本语法及定义 PARAMETERS可以参照数据字典字段或自定义数据类型创建文本输入域及单选框/复选框等, PARAMETERS只能创建一个单一的输入域且最多只能输入行,其 ...
- cocos2dx基础篇(16) 基本绘图DrawPrimitives
[3.x] (1)去掉前缀 "cc" (2)将 ccDraw***() 封装到了 DrawPrimitives 命名空间中. (3)重写绘图函数: draw(Ren ...
- IntelliJ IDEA 2019.3 这回真的要飞起来了,新特性抢先看!
IntelliJ IDEA 才公布下一个主要版本 2019.3 的 Roadmap,近日就发布了 IntelliJ IDEA 2019.3 的首个早期访问版本(即 EAP 版本),版本号为 2019. ...
- Ubuntu终端路径和文件夹相互切换
一. 环境配置 1. 打开终端输入安装命令 sudo apt-get install nautilus-open-terminal 2. 重新加载文件管理器 nautilus -q 3. 重启电脑 s ...
- kotlin学习(10)反射
反射,简单来说,是一种在运行时动态地访问对象属性和方法的方式,而不需要事先确定这些属性是什么. Kotlin反射API:KClass.KCallable.KFunction.KPropperty KC ...
- antd组件Upload实现自己上传
前言 在实现图片上传时,可能需要用到Upload,但是它默认的上传方式是加入图片后直接上传,如果要实现最后再一次性上传,需要自定义内容. //添加按钮的样式 const uploadButton = ...