projecteuler No.90 Cube digit pairs

题目链接:

Problem 90 Cube digit pairs

题目90:用两个立方体表示平方数的奇怪方式。

通过人数:5276



题目分析:

这道题总情况不多,只有不超过C(10,6)^2 = 44100种情况,蛮力算法完全可行。故直接蛮力枚举筛选计数。


解题过程(代码仅供参考,因为偷懒,代码风格什么的实在不好意思...)

【比较简单,不做特殊说明,只需要注意两个骰子的数字完全对换是诶同一种情况。】

#include<stdio.h>

bool check(int * m, int n)
{
	for (int i=0;i<6;i++)
		if (m[i]==n)
			return 1;
	return 0;
}

int main ()
{
	int a[6];
	int b[6];
	int ans=0;
	for (a[0]=0;a[0]<=9;a[0]++){
	for (a[1]=a[0]+1;a[1]<=9;a[1]++){
	for (a[2]=a[1]+1;a[2]<=9;a[2]++){
	for (a[3]=a[2]+1;a[3]<=9;a[3]++){
	for (a[4]=a[3]+1;a[4]<=9;a[4]++){
	for (a[5]=a[4]+1;a[5]<=9;a[5]++){
		for (b[0]=0;b[0]<=9;b[0]++){
		for (b[1]=b[0]+1;b[1]<=9;b[1]++){
		for (b[2]=b[1]+1;b[2]<=9;b[2]++){
		for (b[3]=b[2]+1;b[3]<=9;b[3]++){
		for (b[4]=b[3]+1;b[4]<=9;b[4]++){
		for (b[5]=b[4]+1;b[5]<=9;b[5]++){
			if (!(check(a,0)&&check(b,1) ||
				check(b,0)&&check(a,1)))
				continue;
			if (!(check(a,0)&&check(b,4) ||
				check(b,0)&&check(a,4)))
				continue;
			if (!(check(a,2)&&check(b,5) ||
				check(b,2)&&check(a,5)))
				continue;
			if (!(check(a,1)&&check(b,8) ||
				check(b,1)&&check(a,8)))
				continue;
			if (!(check(a,0)&&check(b,9) ||
				check(a,0)&&check(b,6) ||
				check(b,0)&&check(a,9) ||
				check(b,0)&&check(a,6)))
				continue;
			if (!(check(a,1)&&check(b,9) ||
				check(a,1)&&check(b,6) ||
				check(b,1)&&check(a,9) ||
				check(b,1)&&check(a,6)))
				continue;
			if (!(check(a,3)&&check(b,9) ||
				check(a,3)&&check(b,6) ||
				check(b,3)&&check(a,9) ||
				check(b,3)&&check(a,6)))
				continue;
			if (!(check(a,4)&&check(b,9) ||
				check(a,4)&&check(b,6) ||
				check(b,4)&&check(a,9) ||
				check(b,4)&&check(a,6)))
				continue;
			ans++;
	}}}}}}}}}}}}
	printf("%d\n",ans/2);
	return 0;
}





以上只是我做题时的解法。

如果有更好的解法、更好的思路,欢迎评论讨论~O(∩_∩)O~




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值