栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C. Cube Problem 数学

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C. Cube Problem 数学

题目链接

题目大意:求多少组a,b,c 满足(a+b+c)^3=a^3+b^3+c^3+n

题解:将上述等式化简得 n=3(a+b)(a+c)(b+c)

#include
#define int long long
using namespace std;
int n;
int a[1000006];
int cnt=0;
signed main(){
	scanf("%lld",&n);
	if(n%3) printf("0");
	//当n不为3的倍数的时候,不满足条件 
	else{
		int ans=0;
		n/=3;
		for(int i=2;i*i<=n;i++){
			if(n%i==0) a[++cnt]=i;//将n的因子记录下来 
		}
		//将(a+b)看作a1 将(a+c)看作a2 将(b+c)看作a3  逐个枚举  
		for(int i=1;i<=cnt&&a[i]*a[i]*a[i]<=n;i++){ 
			for(int j=i;j<=cnt&&a[j]*a[j]*a[i]<=n;j++){
				int a1=a[i]; 
				int a2=a[j];
				int a3=n/a[i]/a[j];
				if(a1*a2*a3==n&&(a1+a2-a3>0)&&(a1+a2+a3)%2==0){
					if(a1==a2&&a2==a3&&a1==a3) ans++;//当三者相等时  对答案只有一次贡献 
					else if(a1!=a2&&a2!=a3&&a1!=a3) ans+=6;//当三者都不相等时  对答案有3个值全排列共六次贡献  
					else ans+=3; //当有两个数字相同时,共产生3次贡献  
				}
			}
		}		
		printf("%lld",ans);
	}
} 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/347321.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号