projecteuler No.90 Cube digit pairs

来源:互联网 发布:samorost 3 mac 编辑:程序博客网 时间:2024/06/05 14:33

题目链接:

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
原创粉丝点击